【通知】
【通知】充值首选支付宝,未及时到账,请邮件联系 youjianqunfa@qq.com 备注用户名。
当前位置:首页 > 邮箱群发百科 > 正文内容
7月9日

时间:2020-07-09 17:43

[c#] 邮件群发工具的编写(三)邮件发送的几种方式

0
分类:邮箱群发百科 | 评论:0人 | 浏览:83次   

上一篇,邮件群发工具的编写(二)数据的保存,我们讲到了邮箱数据的保存。

 

这一篇,我们讲一下邮件群发的中心大事之发送。

首先,我们还是先介绍一下通过程序发送邮件的几种方式。

1.Smtp方式.

这种方式比较傻瓜化,在C#里调用起来也相对简单(其他语言像java也有类似的Pocket(包)可以直接调用,相当简单)。通常在.net里,存在两个线程的类可以使用:

一个是System.Net.Mail,另一个就是Sytem.Web.Mail,当然还有没有其他类我也没去细究过了。然而后面那个类现在VS里已经提示说过时了,那就用前面的那个类吧。

调用方法如下,先添加对System.Net.Mail的引用。代码如下:

[c#] 邮件群发工具的编写(三)邮件发送的几种方式View Code

 1 /// <summary>   2    /// 作者:凌晨的搜索者   3    /// 网址:http://www.cnblogs.com/uu102   4    /// </summary>   5     public class MailSender   6    {   7        public SmtpClient Client { get; set; }   8        public MailMessage Msg { get; set; }   9        private string[] To { get; set; }  10        private string SmtpServer { get; set; }  11        private int Port { get; set; }  12        public MailSender()  13        {  14              15        }  16   17        public MailSender(string from, string smtpServer, string username, string password)  18        {  19            this.Init(from, smtpServer,username,password);  20        }  21        private void Init(string from, string smtpServer,string username,string password)  22        {  23            this.Msg = new MailMessage();  24            this.Client = new SmtpClient(smtpServer);  25            this.SmtpServer = smtpServer;//发送邮箱的Smtp服务器地址  26            this.Client.UseDefaultCredentials = true;  27            this.Client.Credentials = new NetworkCredential(username, password);//这里是必须填写的邮箱登录用户名和密码  28            this.Msg.From = new MailAddress(from);//设置邮件发送地址  29            this.Msg.IsBodyHtml = true;//这里最好设置为html格式的邮件正文  30             this.Msg.BodyEncoding = Encoding.UTF8;//邮件正文编码  31            this.Msg.SubjectEncoding = Encoding.UTF8;  32            this.Msg.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;//当邮件发送失败的时候通知一下  33              34        }  35        public void Send(string subject,string body,string[] attachmentPaths)  36        {  37   38              39            for (int i = 0; i < attachmentPaths.Length; i++)  40            {  41                this.Msg.Attachments.Add(new Attachment(attachmentPaths[i]));  42            }  43            this.Msg.Subject = subject;  44            this.Msg.Body = body;  45             this.Client.Send(this.Msg);  46               47        }  48    }

 

这个发送邮件的封装类没有起到封装的作用,还等待各位去补充完善,代码很简单,调用的话,请接着看下面的代码

[c#] 邮件群发工具的编写(三)邮件发送的几种方式View Code

 1  /// <summary>   2         /// copyright:No   3         /// author:凌晨的搜索者   4         /// site:http://www.cnblogs.com/uu102   5         /// </summary>   6         /// <param name="sender"></param>   7         /// <param name="e"></param>   8         private void button3_Click(object sender, EventArgs e)   9         {  10            try  11              {  12                 MailSender mailSender = new MailSender("wxp146@qq.com", "smtp.qq.com", "wxp146", "******");//Rember that it's your password  13                 links = new Dictionary<string, LinkMan>();  14                 for (int i = 0; i < listView1.CheckedItems.Count; i++)  15                 {  16                     ListViewItem listViewItem = listView1.Items[listView1.CheckedItems[i].Index];  17                     LinkMan linkMan = new LinkMan();  18                     string id = listViewItem.Text;  19                     string nick = listViewItem.SubItems[1].Text;  20                     string email = listViewItem.SubItems[2].Text;  21                     string area = listViewItem.SubItems[3].Text;  22                     linkMan.Nick = nick;  23                     linkMan.Email = email;  24                     linkMan.Area = area;  25                     mailSender.Msg.To.Add(linkMan.Email);  26   27   28                     links.Add(linkMan.Email, linkMan);  29   30                 }  31                  32                 /*  33                  * mailSender.Msg.Subject = "这是一封测试信,可以直接放垃圾箱!";  34                 mailSender.Msg.Body = "你好:测定试一下,打扰之处请见谅!<a href="HTTP://www.uu102.com">曙光营销技术论坛</a>";  35                 mailSender.Client.Send(mailSender.Msg);  36                  *  37                  */  38                 mailSender.Send("这是一封测试信,可以直接放垃圾箱!",  39                                  "你好:测定试一下,打扰之处请见谅!<a href="HTTP://www.uu102.com">曙光营销技术论坛</a>",  40                                  new string[] { Environment.CurrentDirectory + "\Config\MailInfo.xml" });  41                 MessageBox.Show("邮件发送成功");  42              }  43             catch (WebException e1)  44             {  45                 MessageBox.Show(string.Format("邮件发送失败,请检查设置{0}",e1.Message));  46             }   47         }

 

至于上面的代码突然出现的button3是一个点击发送的按钮。以上就是我们要介绍的第一种邮件发送方式

2.模拟登陆邮箱管理页面,然后模拟发送。

典型的做法有登录QQ邮箱然后发帖的,网上很多人都在研究这种方式。当然,由于时间和精力的关系,我就没直接贴出代码了,有兴趣的朋友可以联系本人,一起交流探讨一下。

3.利用IIS的Smtp邮箱服务发送

这种方法大概是最麻烦的了,要求在自己的机器上装这装那,还不一定会成功。当然,如果你有个人的网站服务器的话,这个也不失为一个办法。

 

当然还有很多别的或这改良的方法,比如ssl安全加密发送,Socket发送(这种方法以后有时间再不上吧)。

以上就是邮件群发的基本因素,如果要做到群发,当然做这一些还不够,要考虑的因素还很多,还望大家自己完善了。

下一篇,我们就来讲讲群发之后的“邮件跟踪服务”,这是一个目前很多人都关心的问题,邮件发送过程就说到这了。教程每天更新,欢迎继续关注!

  • 评论:(0)
  • 有图有真相

已有 0 位网友发表了一针见血的评论,你还等什么?

你必须 登录 才可以留言.