柚子快报邀请码778899分享:邮件群发器

http://yzkb.51969.com/

公司受金融危机影响,业务量大减,公司销售人员一天到晚在网上找客户名录发邮件,这天公司领导一拍脑袋“开发一个邮件群发器,销售人员提供客户通迅录,程序自动发送”,再而拍拍我肩膀"开发这个邮件群发器任务就交给你去处理了",虽然有三年多时间没有再做过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("

" + item.CompanyName + "

"); 44                        sbHTML.Append("

" + item.Name + ":

"); 45                        sbHTML.Append("

" + currentBodyHtml + "

"); 46                        sbHTML.Append("
"); 47                        sbHTML.Append("

" + txtSin.Text + "

"); 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

柚子快报邀请码778899分享:邮件群发器

http://yzkb.51969.com/

好文阅读

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。