邮件群发器

简介:

公司受金融危机影响,业务量大减,公司销售人员一天到晚在网上找客户名录发邮件,这天公司领导一拍脑袋“开发一个邮件群发器,销售人员提供客户通迅录,程序自动发送”,再而拍拍我肩膀"开发这个邮件群发器任务就交给你去处理了",虽然有三年多时间没有再做过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 + "\r\n");
 53                        sbHTML.Append(item.Name + ":\r\n");
 54                        sbHTML.Append(currentBodyHtml + "\r\n");                        
 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
复制代码
分类:  ASP.NET

本文转自左正博客园博客,原文链接:http://www.cnblogs.com/soundcode/p/3661860.html ,如需转载请自行联系原作者
相关文章
|
7月前
|
存储 弹性计算 运维
自动回复邮件脚本
【4月更文挑战第30天】
77 1
|
7月前
|
存储 小程序 数据安全/隐私保护
邮件新玩法!Zoho Mail倾力打造微信小程序,邮件畅通无阻
Zoho Mail推出微信小程序,用户可在微信内直接收发邮件,无需下载APP。只需企业超管在后台启用微信集成,员工授权即可使用。目前1.0版本不支持通讯录集成,写信需手动输入邮箱地址。小程序提供邮件回复、新邮件撰写功能,可添加附件。如需进行复杂设置,仍需通过网页版邮箱。联系我们:support-zohomail@zohocorp.com.cn。
52 1
|
网络协议 安全 API
外贸邮件群发软件介绍
软件介绍 伯勒邮件群发机是一款专业的邮件群发软件,功能强大. 高效. 可定制化程度高,适合大批量邮件群发。 数年来持续改进,独家研发多种文本加密转换技术,可有效提高收件箱机率。本软件适用于QQ邮件群发电子报刊发行、邮件列表订阅发送、企业客户联系、电商平台会员营销、金融业对账单、外贸客户联系、工资条群发、通知发送等领域。软件支持全世界各国文字,软件按照 MIME 协议标准封装邮件,功能多样强大,可发任何邮箱。内置批量发件箱密码检测工具,收件箱/垃圾箱分类工具等多种实用工具,让您的邮件营销之路畅通无阻!
外贸邮件群发软件介绍
|
监控 安全 开发者
安全日报邮件的发送和介绍|学习笔记
快速学习安全日报邮件的发送和介绍
135 0
安全日报邮件的发送和介绍|学习笔记
|
Python
【辅助工具】实现QQ消息轰炸
QQ是我们常用的聊天软件,有时候我们在和别人发生争执的时候往往要长时间发很多话,这个时候我们就可以用Python实现一个简单的消息轰炸工具,解放双手。
946 0
|
监控
外贸邮件管理软件|外贸怎么用邮件催客户?
首先可以跟客户进行有效的沟通,做外贸面对的都是海外客户,外国人的地域不同可能在文化和交流上有很大的差异,多做各种国家的人文背景了解
235 0
外贸邮件管理软件|外贸怎么用邮件催客户?
|
数据采集 搜索推荐 数据挖掘
有了这个神器,快速告别垃圾短信邮件
有了这个神器,快速告别垃圾短信邮件
740 0
|
存储 监控 数据库