C# 发送邮件

释放双眼,带上耳机,听听看~!

Prepare


 本文将使用一个NuGet公开的组件来实现右键发送,支持多种发送方式及自定义的邮件发送源,方便大家进行快速的开发系统。

在Visual Studio 中的NuGet管理器中可以下载安装,也可以直接在NuGet控制台输入下面的指令安装:


1
2
1Install-Package HslCommunication
2

 

 

 

Reference


ModBus组件所有的功能类都在 HslCommunication.ModBus命名空间,所以再使用之前先添加


1
2
1using HslCommunication.BasicFramework;
2

 

简单例子


比如我们要发一条文本到指定的邮箱,只需要2行代码就能实现,先设置发送的对象,然后进行调用方法发送。


1
2
3
4
5
6
7
8
1private void userButton20_Click(object sender, EventArgs e)
2        {
3            // 邮件发送
4            SoftMail.MailSystem163.MailSendAddress = "hsl200909@163.com";
5            // 先填好主题,然后填内容
6            SoftMail.MailSystem163.SendMail("重要消息", "这是一条重要的文本");
7        }
8

然后就能在你的邮箱里看见给你发送的邮件了,整个发送方法的发送时间大致在200ms-300ms左右,或者直接使用一行代码完成,如下代码展示


1
2
3
4
5
6
1private void userButton20_Click(object sender, EventArgs e)
2        {
3            // 邮件发送
4            SoftMail.MailSystem163.SendMail( "hsl200909@163.com", "重要信息", "这是一条重要的文本" );
5        }
6

 

 

实际效果,如下就是截图:

C# 发送邮件

 

如果想知道发送是否成功,需要对方法的返回结果进行判定,判定方法如下所示:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
1private void userButton20_Click(object sender, EventArgs e)
2        {
3            // 邮件发送
4            SoftMail.MailSystem163.MailSendAddress = "hsl200909@163.com";
5
6            if(SoftMail.MailSystem163.SendMail("重要消息", "这是一条重要的文本"))
7            {
8                MessageBox.Show("发送成功!");
9            }
10            else
11            {
12                MessageBox.Show("发送失败!");
13            }
14        }
15

注意:所有的SendMail 方法返回一个bool变量,可以进行判断邮件发送是否成功,本文后面的方法都省略对发送成功或是失败的验证

 

 

异常发送


在程序开发中,会发生各种各样的异常,有时候需要发送异常到你的邮箱,好作为以后判断的依据。


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
1private void userButton20_Click(object sender, EventArgs e)
2        {
3            // 邮件发送
4            SoftMail.MailSystem163.MailSendAddress = "hsl200909@163.com";
5
6            try
7            {
8                int i = 0;
9                int j = 20 / i;
10            }
11            catch(Exception ex)
12            {
13                SoftMail.MailSystem163.SendMail(ex);
14            }
15        }
16

 在邮件上会收到如下的界面:

C# 发送邮件

系统记录了详细的异常信息来方便追踪,尤其是你的程序部署到远端的时候,这个方法就特别奏效。

 

当然还可以指定额外的信息。


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
1private void userButton20_Click(object sender, EventArgs e)
2        {
3            // 邮件发送
4            SoftMail.MailSystem163.MailSendAddress = "hsl200909@163.com";
5
6            try
7            {
8                int i = 0;
9                int j = 20 / i;
10            }
11            catch(Exception ex)
12            {
13                SoftMail.MailSystem163.SendMail(ex, "当前正在做除法运算。");
14            }
15        }
16

高级发送


如果需要发送高级文本,就是网页格式的文本,这样就能发送高级的样式,下面举例说明:


1
2
3
4
5
6
7
8
1private void userButton20_Click(object sender, EventArgs e)
2        {
3            // 邮件发送
4            SoftMail.MailSystem163.MailSendAddress = "hsl200909@163.com";
5
6            SoftMail.MailSystem163.SendMail("重要消息", "<div style=\"background: blue\">测试文本</div>", true);
7        }
8

这样就能在邮件的接收方接收到比较丰富的文本。

C# 发送邮件

可以看到,只要熟悉html语言,就可以实现任何丰富的文本,包括图片链接,或是二进制的图片内容直接发送。

 

还有一个终极发送的方法,实现任何自定义的功能:


1
2
3
4
5
6
7
8
9
10
11
12
13
1/// <summary>
2        /// 发送邮件的方法,需要提供完整的参数信息
3        /// </summary>
4        /// <param name="addr_from">发送地址</param>
5        /// <param name="name">发送别名</param>
6        /// <param name="addr_to">接收地址</param>
7        /// <param name="subject">邮件主题</param>
8        /// <param name="body">邮件内容</param>
9        /// <param name="priority">优先级</param>
10        /// <param name="isHtml">邮件内容是否是HTML语言</param>
11        /// <returns>发生是否成功,内容不正确会被视为垃圾邮件</returns>
12        public bool SendMail(string addr_from, string name, string[] addr_to, string subject, string body, MailPriority priority, bool isHtml)
13

 

自定义发送源


上面的代码就是使用了内置的163邮箱作为发送源,如果你想生成自己的发送源,参照下面163邮箱的创建方式


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
1/// <summary>
2        /// 系统提供一个默认的163邮箱发送账号,只要更改接收地址即可发送服务,可能会被拦截
3        /// </summary>
4        public static SoftMail MailSystem163 = new SoftMail(
5            mail =>
6            {
7                mail.Host = "smtp.163.com";//使用163的SMTP服务器发送邮件
8                mail.UseDefaultCredentials = true;
9                mail.EnableSsl = true;
10                mail.Port = 25;
11                mail.DeliveryMethod = SmtpDeliveryMethod.Network;
12                mail.Credentials = new System.Net.NetworkCredential("softmailsendcenter", "zxcvbnm6789");//密码zxcvbnm1234
13            },
14            "softmailsendcenter@163.com",
15            "hsl200909@163.com"
16            );
17

参照这个来实例化你自己的发送即可。

 

给TA打赏
共{{data.count}}人
人已打赏
安全技术

Bootstrap 4 Flex(弹性)布局

2021-12-21 16:36:11

安全技术

从零搭建自己的SpringBoot后台框架(二十三)

2022-1-12 12:36:11

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索