zoukankan      html  css  js  c++  java
  • 邮件群发器

    公司受金融危机影响,业务量大减,公司销售人员一天到晚在网上找客户名录发邮件,这天公司领导一拍脑袋“开发一个邮件群发器,销售人员提供客户通迅录,程序自动发送”,再而拍拍我肩膀"开发这个邮件群发器任务就交给你去处理了",虽然有三年多时间没有再做过WinForm,但也没办法只好硬着头皮拍拍胸脯"没问题"。

    马上登录园子"WinForm 邮件"搜索,真庆辛结果还不少。照着大牛们的文章,很快就可以接发邮件了,看来园子不愧我们程序员的百科全书。

    不过期间还是碰到了一些小问题,比如qq邮箱始终通不过身份验证(到现在也没解决,最后放弃了QQ邮箱),还在多线程进度显示的问题(最后也是在园子里找到解决思路),在此贴部份代码,以备忘。


      1#region 发送邮件
      2        private void SendEmail()
      3        {
      4            try
      5            {
      6                MethodInvoker mi = new MethodInvoker(this.ShowProcessBar);
      7                this.BeginInvoke(mi);
      8                MailMessage mail = new MailMessage();
      9                mail.From = new MailAddress(txtAccount.Text + cmbServer.Text);
     10                mail.Subject = txtSubject.Text;
     11                mail.SubjectEncoding = System.Text.Encoding.UTF8;
     12                mail.IsBodyHtml = isHTML.Checked;
     13                mail.BodyEncoding = System.Text.Encoding.UTF8;
     14                mail.Priority = MailPriority.High;
     15                mail.ReplyTo = mail.From;
     16                if (lstAttachFile.Items.Count>0)
     17                {               
     18                    Attachment atta = null;
     19                    foreach (object li in lstAttachFile.Items)
     20                    {
     21                        string fn = li.ToString();
     22                        if (System.IO.File.Exists(fn))
     23                        {                            
     24                            atta = new Attachment(fn);
     25                            ContentDisposition dispotion = atta.ContentDisposition;
     26                            dispotion.CreationDate = File.GetCreationTime(fn);
     27                            dispotion.ModificationDate = File.GetLastWriteTime(fn);
     28                            dispotion.ReadDate = File.GetLastAccessTime(fn);
     29                            mail.Attachments.Add(atta);
     30                        }

     31                    }

     32                }

     33                SmtpClient client = GetSmtpClien(cmbServer.Text);
     34                int index = 1;
     35                foreach (Contract item in lstContract)
     36                {
     37                    mail.To.Clear();
     38                    mail.To.Add(new MailAddress(item.MailAddress));
     39                    StringBuilder sbHTML = new StringBuilder();
     40                    if (isHTML.Checked)
     41                    {
     42                        
     43                        sbHTML.Append("<h4>" + item.CompanyName + "</h4>");
     44                        sbHTML.Append("<h4>" + item.Name + ":</h4>");
     45                        sbHTML.Append("<p>" + currentBodyHtml + "</p>");
     46                        sbHTML.Append("<hr/>");
     47                        sbHTML.Append("<p>" + txtSin.Text + "</p>");
     48                        
     49                    }

     50                    else
     51                    {
     52                        sbHTML.Append(item.CompanyName + " ");
     53                        sbHTML.Append(item.Name + ": ");
     54                        sbHTML.Append(currentBodyHtml + " ");                        
     55                        sbHTML.Append(txtSin.Text); 
     56                    }

     57                    mail.Body = sbHTML.ToString();
     58                    client.Send(mail);
     59                    if (IncreaseEvent != null)
     60                    {
     61                        IncreaseEvent(index);
     62                    }

     63                    index++;
     64                }

     65                //mail.
     66                //object stateMsg = mail;
     67                MessageBox.Show(this"发送完毕!""提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
     68                MethodInvoker mi2 = new MethodInvoker(this.HideProccessBar);
     69                this.BeginInvoke(mi2);
     70            }

     71            catch (Exception ex)
     72            {
     73                MessageBox.Show(this, ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
     74                MethodInvoker mi3 = new MethodInvoker(this.HideProccessBar);
     75                this.BeginInvoke(mi3);
     76            }

     77        }

     78        #endregion

     79
     80        #region 获取SmptClient
     81        private SmtpClient GetSmtpClien(string serverType)
     82        {
     83            SmtpClient client = new SmtpClient("");
     84            switch (serverType)
     85            {
     86                case "@163.com":
     87                    client.Host = "smtp.163.com";
     88                    client.UseDefaultCredentials = false;
     89                    client.EnableSsl = false;
     90                    client.DeliveryMethod = SmtpDeliveryMethod.Network;
     91                    client.Credentials = new System.Net.NetworkCredential(txtAccount.Text, txtPassword.Text);
     92                    break;
     93                case "@qq.com":
     94                    client.Host = "smtp.qq.com";
     95                    client.UseDefaultCredentials = true;
     96                    client.EnableSsl = false;
     97                    client.Port = 25;
     98                    client.DeliveryMethod = SmtpDeliveryMethod.Network;
     99                    client.Credentials = new System.Net.NetworkCredential(txtAccount.Text, txtPassword.Text);
    100                    break;
    101                case "@gmail.com":
    102                    client.Host = "smtp.gmail.com";
    103                    //client.UseDefaultCredentials = false;
    104                    client.EnableSsl = true;
    105                    client.Port = 587;
    106                    //client.DeliveryMethod = SmtpDeliveryMethod.Network;
    107                    client.Credentials = new System.Net.NetworkCredential(txtAccount.Text, txtPassword.Text);
    108                    break;
    109                case "@winccess.com":
    110                    client.Host = "mail.winccess.com";
    111                    //client.UseDefaultCredentials = false;
    112                    client.EnableSsl = false;
    113                    //client.Port = 25;
    114                    //client.DeliveryMethod = SmtpDeliveryMethod.Network;
    115                    client.Credentials = new System.Net.NetworkCredential(txtAccount.Text + serverType, txtPassword.Text);
    116                    break;
    117                default:
    118                    break;
    119            }
                
    120            return client;
    121        }

    122        #endregion
  • 相关阅读:
    linux使用tar命令打包压缩时排除某个文件夹或文件
    SEO误区之——静态化页面
    Usage of API documented as @since1.6+
    JAVA多线程售票问题
    nginx基本配置与参数说明
    ElasticSearch搜索实例含高亮显示及搜索的特殊字符过滤
    实例讲解Nginx下的rewrite规则
    postgresql之ctid的浅谈
    【转载】PostgreSQL分区表(Table Partitioning)应用
    PostgreSQL中使用外部表
  • 原文地址:https://www.cnblogs.com/soundcode/p/3661860.html
Copyright © 2011-2022 走看看