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