⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mutimailhandle.cs

📁 搜索网上电子邮件,加入url就可搜索,用c#编写
💻 CS
字号:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Net;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
using System.Collections;
using System.Threading;
using System.Net.Mail;
using jmail;
/// <summary>
/// 多线程邮件群发
/// </summary>
public class MutiMailHandle
{
    private ArrayList _almail =new ArrayList();//待发送邮件列表
    private ArrayList _alerr = new ArrayList(); //错误邮件列表
    private DataTable _dtSender = new DataTable();//发送的邮箱列表
    private DataTable _dtmail = new DataTable();//发送的邮件内容
    private int _interval = 300;//发送间隔
    private int _number = 10;//一次发送数量
    private string _sender = "";
    private string _title = "";
    private string _body = "";
    private string _pwd = "";
    private string _smtp = "";
    private int _threadNum = 1; //线程数量
    private int _cursor = 0;//待发邮件当前位置
    Thread[] thread;    //线程数组
	public MutiMailHandle()
	{
		//
		// TODO: Add constructor logic here
		//
	}
    /// <summary>
    /// 发送邮件
    /// </summary>
    public void Send()
    {
        if (_dtSender.Rows.Count > 0&&_almail.Count>0&&_dtmail.Rows.Count>0)    //发送人 邮件地址 邮件内容
        {
            _threadNum = _dtSender.Rows.Count;//根据发送的邮箱数来顶线程的个数。
            _title=_dtmail.Rows[0]["title"].ToString();
            _body = _dtmail.Rows[0]["content"].ToString();

            thread = new Thread[_threadNum];
            for (int i = 0; i < _threadNum; i++)    //实例化线称
            {
                _sender = _dtSender.Rows[i]["email"].ToString();
                _pwd = _dtSender.Rows[i]["password"].ToString();
                _smtp = _dtSender.Rows[i]["smtp"].ToString();
                thread[i] = new Thread(new ThreadStart(sendMail));
                thread[i].Start();
                Thread.Sleep(500);//等待线程启动
            }
            waitFinsh();//等待线程结束
        }
    }
    #region 内部方法
    private void waitFinsh()
    {
        for (int i = 0; i < _threadNum; i++)    //实例化线称
        {
            if (thread[i].IsAlive)
            {
                Thread.Sleep(500);
                i--;
            }
        }
    }
    private void sendMail()
    {
        string sender = _sender;
        string pwd = _pwd;
        string smtpserver = _smtp;
        MessageClass mail = new MessageClass();
        mail.Logging = true;
        mail.ISOEncodeHeaders   =   true;       
        mail.HTMLBody = "AAAAA";
        mail.Subject = _title;
        mail.From = sender.Trim();
        mail.MailServerUserName = sender.Trim();
        mail.MailServerPassWord = pwd.Trim();
     
        mail.Charset = "GB2312";
        mail.ContentType = "text/html";
        mail.Priority = 1;
        ArrayList mac = getMailList();
        int n = mac.Count;
        //发送邮件
        while (n>0) //还有需要发送的邮件
        {

            mail.Recipients.Clear(); //清除目前邮箱
            for(int i=0; i<mac.Count; i++)
            {
                mail.AddRecipient(mac[i].ToString().Trim(),"","");
            }
            try
            {
                mail.Send(smtpserver.Trim(), false);
                Thread.Sleep(_interval);//间隔一端时间
            }
            catch (Exception ex)
            {
                logErr("发送失败! 详情:" + ex.Message);
            }
            mac = getMailList(); //获取邮件列表
            n = mac.Count;
        }
        mail.Clear();
        mail.Close();
    }
    /// <summary>
    /// 获取邮件列表
    /// </summary>
    /// <returns></returns>
    private ArrayList getMailList()
    {
        int n = _almail.Count;//邮件总数
        if (n > (_cursor + _number)) n = _cursor + _number;
        ArrayList mac = new ArrayList();
        lock (this)
        {
            for (; _cursor < n; _cursor++)
            {
                try
                {
                    mac.Add(_almail[_cursor].ToString());
                }
                catch{} //忽略错误

            }
        }
        return mac;
    }
    private void logErr(string msg)
    {
        lock (this)
        {
            _alerr.Add(msg);
        }
    }
    #endregion

    #region "公共属性"
    /// <summary>
    /// 获取错误列表
    /// </summary>
    public ArrayList GetErr
    {
        get
        {
            return _alerr;
        }
    }
    /// <summary>
    /// 接收送邮件列表
    /// </summary>
    public ArrayList  MailList
    {
        get
        {
            return _almail;
        }
        set
        {
            _almail = value;
        }
    }
    /// <summary>
    /// 发送邮件
    /// </summary>
    public DataTable SenderList
    {
        get
        {
            return _dtSender;
        }
        set
        {
            _dtSender = value;
        }
    }
    /// <summary>
    /// 发送的邮件内容
    /// </summary>
    public DataTable Mail
    {
        get
        {
            return _dtmail;
        }
        set
        {
            _dtmail = value;
        }
    }
    /// <summary>
    /// 发送间隔时间秒
    /// </summary>
    public int Interval
    {
        get
        {
            return _interval;
        }
        set
        {
            _interval = value;
        }
    }
    /// <summary>
    /// 每次发送的数量
    /// </summary>
    public int Number
    {
        get
        {
            return _number;
        }
        set
        {
            _number = value;
        }
    }
    #endregion 
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -