zoukankan      html  css  js  c++  java
  • C#带数据多线程发邮件

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading;
    using System.Web.Mail;

    namespace ConsoleApplication1
    {
     
        class Program
        {
            static void Main(string[] args)
            {
                int tempCount = 12;
                int tempWhileCount = (tempCount / 10) * 10;
                int tempOtherCount = tempCount - tempWhileCount;

                Console.WriteLine(tempWhileCount);
                Console.WriteLine(tempOtherCount);

                //指定线程数
                int size = 5;
                List<MailInfo> lall = new List<MailInfo>();
                //添加邮件信息
                for (int i = 0; i <= tempCount; i++)
                {
                    lall.Add(new MailInfo("三毛"+ i.ToString(),"wangdetian16" + i.ToString() + "@qq.com"));
                }
                //创建多线程
                for (int i = 0; i < size; i++)
                {
                    ThreadData temptd = new ThreadData();
                    List<MailInfo> tempLi = new List<MailInfo>();
                    for (int j = i * (tempWhileCount / size); j < (i * (tempWhileCount / size) + tempWhileCount / size); j++)
                    {
                        tempLi.Add(lall[j]);
                    }
                    temptd.LisMails = tempLi;
                    Thread tempThread = new Thread(new ThreadStart(temptd.Run));
                    tempThread.Start();


                }
                ThreadData temptdOther = new ThreadData();
                List<MailInfo> tempLiOther = new List<MailInfo>();
                for (int j = tempWhileCount; j < tempCount; j++)
                {
                    tempLiOther.Add(lall[j]);
                }
                temptdOther.LisMails = tempLiOther;
                Thread tempThreadOther = new Thread(new ThreadStart(temptdOther.Run));
                tempThreadOther.Start();
               

                //ThreadData thdata1 = new ThreadData();
                //List<string> l1 = new List<string>();
                //for (int i = 0; i < 1000; i++)
                //{
                //    l1.Add("wangdetian16"+i.ToString()+"@163.com");
                //}
               
                //thdata1.LisMails = l1;
                //Thread thread = new Thread(new ThreadStart(thdata1.Run));
                //thread.Start();

                //ThreadData thdata2 = new ThreadData();
                //List<string> l2 = new List<string>();
                //for (int i = 0; i < 10; i++)
                //{
                //    l2.Add("wangdetian18" + i.ToString() + "@163.com");
                //}
                //thdata2.LisMails = l2;
                //Thread thread1 = new Thread(new ThreadStart(thdata2.Run));
                //thread1.Start();
               
      
            }
        }

        public class ThreadData
        {
        
            public static string MailMessage = "{0}你好你人物要做近三分萨拉夫接撒立法精神多了几分当上了副驾驶的发生大风蓝色队服那里公司发展规划的";
            private List<MailInfo> _LisMails;
            public static string frommail = "mailto:wangdetian116688@163.com%22;//System.Configuration.ConfigurationManager.AppSettings[%22frommail"];
            public static string username = "wangdetian116688";//System.Configuration.ConfigurationManager.AppSettings["username"];
            public static string password = "987654321";//System.Configuration.ConfigurationManager.AppSettings["password"];
            public List<MailInfo> LisMails
            {
                set { this._LisMails = value; }
                get { return this._LisMails; }
            }
            public void Run()
            {
                foreach (MailInfo s in LisMails)
                {
                    System.Threading.Thread.Sleep(1000);
                    Console.WriteLine(string.Format(MailMessage,s.MailName+s.MailAddress));
                    SendMail20(s.MailAddress, s.MailName, string.Format(MailMessage, s.MailName));
                }
            }
            private bool SendMail(string toMail, string subject, string body)
            {
                try
                {


                    string fromMail = ThreadData.frommail;
                    MailMessage myMail = new MailMessage();
                    myMail.From = fromMail;
                    myMail.To = toMail;
                    //myMail.Cc = ccMail;
                    //myMail.Bcc = bccMail;
                    myMail.Subject = subject;
                    myMail.Body = body;
                    myMail.BodyFormat = MailFormat.Html;

                    //附件
                    string ServerFileName = "";
                    //if (this.upfile.PostedFile.ContentLength != 0)
                    //{
                    //    string upFileName = this.upfile.PostedFile.FileName;
                    //    string[] strTemp = upFileName.Split('.');
                    //    string upFileExp = strTemp[strTemp.Length - 1].ToString();
                    //    ServerFileName = Server.MapPath(DateTime.Now.ToString("yyyyMMddhhmmss") + "." + upFileExp);
                    //    this.upfile.PostedFile.SaveAs(ServerFileName);
                    //    myMail.Attachments.Add(new MailAttachment(ServerFileName));
                    //}


                    myMail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", 1);
                    myMail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", ThreadData.username); //发送方邮件帐户
                    myMail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", ThreadData.password); //发送方邮件密码

                    SmtpMail.SmtpServer = "smtp." + fromMail.Substring(fromMail.IndexOf("@") + 1);
                    SmtpMail.Send(myMail);

                    return true;
                }
                catch
                {
                    return false;
                }
            }
            private bool SendMail20(string toMail, string subject, string body)
            {
                try
                {

                    System.Net.Mail.MailAddress from = new System.Net.Mail.MailAddress(ThreadData.frommail); //邮件的发件人
                    //string fromMail = ThreadData.frommail;
                    System.Net.Mail.MailMessage myMail = new System.Net.Mail.MailMessage();
                    //设置邮件的标题
                    myMail.Subject = subject;
                    //设置邮件的发件人
                    //Pass:如果不想显示自己的邮箱地址,这里可以填符合mail格式的任意名称,真正发mail的用户不在这里设定,这个仅仅只做显示用
                    myMail.From = from;
                    //MailAddress(address, displayName)
                    myMail.To.Add(new System.Net.Mail.MailAddress(toMail));
                  
                    ////设置邮件的抄送收件人
                    ////这个就简单多了,如果不想快点下岗重要文件还是CC一份给领导比较好
                    //mail.CC.Add(new MailAddress("Manage@hotmail.com", "尊敬的领导");

                    //设置邮件的内容
                    myMail.Body = body;
                    //设置邮件的格式
                    myMail.BodyEncoding = System.Text.Encoding.GetEncoding("gb2312");
                    myMail.IsBodyHtml = true;
                    //设置邮件的发送级别
                    myMail.Priority = System.Net.Mail.MailPriority.Normal;

                    //设置邮件的附件,将在客户端选择的附件先上传到服务器保存一个,然后加入到mail中
                    //string fileName = txtUpFile.PostedFile.FileName.Trim();
                    //fileName = "D:\UpFile\" + fileName.Substring(fileName.LastIndexOf("\") + 1);
                    //txtUpFile.PostedFile.SaveAs(fileName); // 将文件保存至服务器
                    //mail.Attachments.Add(new Attachment(fileName));

                    myMail.DeliveryNotificationOptions = System.Net.Mail.DeliveryNotificationOptions.OnSuccess;

                    System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient();
                    //设置用于 SMTP 事务的主机的名称,填IP地址也可以了
                    client.Host = "smtp." + ThreadData.frommail.Substring(ThreadData.frommail.IndexOf("@") + 1);
                    //"smtp.hotmail.com";// "smtp." + fromMail.Substring(fromMail.IndexOf("@") + 1);
                    //设置用于 SMTP 事务的端口,默认的是 25
                    //client.Port = 25;
                    client.UseDefaultCredentials = false;
                    //这里才是真正的邮箱登陆名和密码,比如我的邮箱地址是 wangdetian@126.com, 我的用户名为 hbgx ,我的密码是 xgbh
                    client.Credentials = new System.Net.NetworkCredential(ThreadData.username, ThreadData.password);
                    client.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
                    //都定义完了,正式发送了,很是简单吧!
                    client.Send(myMail);   

                    return true;
                }
                catch
                {
                    return false;
                }
            }
          
        }
        public class MailInfo
        {
            public string MailName;
            public string MailAddress;
            public string MailMessage;
            public MailInfo(string mailName, string mailAddress)
            {
                this.MailName = mailName;
                this.MailAddress = mailAddress;
            }
            public MailInfo(string mailName, string mailAddress, string mailMessage)
            {
                this.MailName = mailName;
                this.MailAddress = mailAddress;
                this.MailMessage = mailMessage;
            }
        }
          
        }


     

  • 相关阅读:
    Importing csv data file in SQLite3
    【北京】【高级爬虫开发工程师、高级网页分析工程师】知名上市互联网公司招聘【猎头】
    介绍一个C++的ORM工具ODB(一)
    基础c练习
    virtualenv中文文档放出,请雅正
    navicat sqlite使用了一种wine的方式来支持linux平台,
    之前 传闻已经的djblets竟是reviewboard团队整的
    在HTML5 Web SQL中使用ORM工具 前端开发 e800
    本来想注册个51cto的blog
    Portable way to get file size (in bytes) in shell?
  • 原文地址:https://www.cnblogs.com/bestsaler/p/1835477.html
Copyright © 2011-2022 走看看