码迷,mamicode.com
首页 > 编程语言 > 详细

c#smtp多线程

时间:2015-11-08 14:31:14      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Net.Mail;
using System.Net.Sockets;
using System.Security.Cryptography;
using System.Text;
using System.Threading;
using System.Windows.Forms;

namespace SMTP测试
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        bool b = false;

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < 5; i++)
            {
                Thread th = new Thread(new ThreadStart(delegate
                {
                    Console.WriteLine(CheckSmtp("smtp.126.com", 25, "user", "pswd"));
                }));                                           
                th.IsBackground = true;
                th.Start();
            }


        }
        private bool CheckSmtp(string smtpServer, int port, string username, string password)
        {
            TcpClient tcpClient = new TcpClient(smtpServer, port);
            NetworkStream stream = tcpClient.GetStream();

            if (!WaiteFor(stream, "220")) return false;

            SendCommand(stream, "HELO 211.152.50.xxx\r\n");
            if (!WaiteFor(stream, "250")) return false;

            SendCommand(stream, "AUTH LOGIN\r\n");
            if (!WaiteFor(stream, "334")) return false;

            SendCommand(stream, Base64Encode(username) + "\r\n");
            if (!WaiteFor(stream, "334")) return false;

            SendCommand(stream, Base64Encode(password) + "\r\n");
            if (!WaiteFor(stream, "235")) return false;
            
            return true;

        }

        private bool WaiteFor(NetworkStream stream, string strCode)
        {
            int StreamSize;
            byte[] ReadBuffer = new byte[1024];
            StreamSize = stream.Read(ReadBuffer, 0, ReadBuffer.Length);
            string Returnvalue = Encoding.Default.GetString(ReadBuffer).Substring(0, StreamSize);

            //Console.WriteLine(Returnvalue);

            return Returnvalue.Substring(0, 3).Equals(strCode);
        }
        private void SendCommand(NetworkStream stream, string strCmd)
        {
            byte[] WriteBuffer;

            WriteBuffer = Encoding.Default.GetBytes(strCmd);

            stream.Write(WriteBuffer, 0, WriteBuffer.Length);

        }

        private string Base64Encode(string str)
        {
            byte[] barray;
            barray = Encoding.Default.GetBytes(str);
            return Convert.ToBase64String(barray);
        }

    

     
    }
}

 

c#smtp多线程

标签:

原文地址:http://www.cnblogs.com/milest/p/4946936.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!