开源.NetCore通用工具库Xmtool使用连载 - 发送邮件篇

开源,netcore,通用,工具,xmtool,使用,连载,发送,邮件 · 浏览次数 : 270

小编点评

**邮件发送类库** 该类库提供五个方法,用于实现邮件发送功能: 1. **获取邮件发送对象** `public static MailTool Mail(string host, int port, string account, string password, bool enableSsl = false)`:获取 SMTP服务器地址、端口、用户名和密码。 2. **发送普通邮件** `public void Send(string subject, string body, string bodyEncoding, string from, string fromName, string to, string replyTo, string cc, string bcc, params string[] attachments)`:发送标准邮件。 3. **发送网页邮件** `public void SendHtml(string subject, string body, string bodyEncoding, string from, string fromName, string to, string replyTo, string cc, string bcc, params string[] attachments)`:发送 HTML 邮件。 4. **发送异步普通邮件** `public async Task SendAsync(string subject, string body, string bodyEncoding, string from, string fromName, string to, string replyTo, string cc, string bcc, params string[] attachments)`:发送异步标准邮件。 5. **发送异步网页邮件** `public async Task SendHtmlAsync(string subject, string body, string bodyEncoding, string from, string fromName, string to, string replyTo, string cc, string bcc, params string[] attachments)`:发送异步 HTML 邮件。 **使用方法** ```csharp // 获取邮件发送对象 MailTool mailClient = Xmtool.Mail("smtp.126.com", 25, "test@123", "test@123", true); // 发送普通邮件 mailClient.Send("测试邮件", "您好,这是一封测试邮件。", "utf-8", "softwaiter@126.com", "softwaiter", "shoujianren@126.com", "softwaiter@126.com", "lingdao@126.com,lingdao2@126.com"); // 发送网页邮件 await mailClient.SendHtml("测试邮件", "<html><body>hello world.</body></html>", "utf-8", "softwaiter@126.com", "shoujianren@126.com", "附件.xlsx"); ``` **其他** * 可使用 `Mail.SendAsync` 和 `Mail.SendHtmlAsync` 方法实现异步发送。 * 可以使用 `Mail.GetLastError()` 获取发送邮件时的错误信息。

正文

【Github源码】


《上一篇》 介绍了Xmtool工具库中的随机值类库,今天我们继续为大家介绍其中的邮件发送类库。


发送邮件是系统开发中经常需要的功能,广泛应用于消息通知、异常告警、内容分发等场景;.netcore框架内置提供了发送邮件的方法,但使用时需要创建多个邮件对象实例,设置一堆复杂的属性,整个过程代码冗长,体验及其不友好;因此,本人将整个邮件发送过程进行了二次封装,最终,用户只需要调用两个方法,即可实现发送邮件的目的。


本类库总共提供了5个方法,分为获取邮件发送对象、发送普通邮件、发送网页邮件3类。

获取邮件发送对象

发送普通邮件(完整版)

发送普通邮件(简化版)

发送网页邮件(完整版)

发送网页邮件(简化版)



1. 获取邮件发送对象

public static MailTool Mail(string host, int port, string account, string password, bool enableSsl = false)
参数说明

host:SMTP发送邮件主机地址。

port:SMTP发送邮件服务端口。

account:发送邮件的邮箱账户(此账户并非是发件人账户)

password:发送邮件的邮箱账户密码

enableSsl:指定是否SmtpClient使用安全套接字层(SSL)加密的连接

MailTool mail = Xmtool.Mail("smtp.126.com", 25, "test", "test@123");
// TODO

2. 发送普通邮件(完整版)

public void Send(string subject, string body, string bodyEncoding, string from, string fromName, string to, string replyTo, string cc, string bcc, params string[] attachments)
参数说明

subject:邮件标题。

body:邮件内容。

bodyEncoding:邮件内容编码格式,通常为utf-8。

from:收件人看到的发件人邮箱地址。

fromName:收件人看到的发件人名称。

to:收件人邮箱地址。

replyTo:收件人回复邮件时的邮件地址。

cc:抄送人邮箱地址,多个用逗号分隔。

bcc:秘密抄送人邮箱地址,多个用逗号分隔。

attachments:附件地址,允许多个。

MailTool mail = Xmtool.Mail("smtp.126.com", 25, "test", "test@123");
mail.Send("测试邮件", "您好,这是一封测试邮件。", "utf-8", "softwaiter@126.com", 
          "softwaiter", "shoujianren@126.com", "softwaiter@126.com",
          "lingdao@126.com,lingdao2@126.com", "", "附件.xlsx");

3. 发送普通邮件(简化版)

public void Send(string subject, string body, string from, string to, params string[] attachments)
参数说明

subject:邮件标题。

body:邮件内容。

from:收件人看到的发件人邮箱地址。

to:收件人邮箱地址。

attachments:附件地址,允许多个。

MailTool mail = Xmtool.Mail("smtp.126.com", 25, "test", "test@123");
mail.Send("测试邮件", "您好,这是一封测试邮件。", "softwaiter@126.com", "shoujianren@126.com", "附件.xlsx");

4. 发送网页邮件(完整版)

public void SendHtml(string subject, string body, string bodyEncoding, string from, string fromName, string to, string replyTo, string cc, string bcc, params string[] attachments)
参数说明

subject:邮件标题。

body:邮件内容(应该是网页源码)

bodyEncoding:邮件内容编码格式,通常为utf-8。

from:收件人看到的发件人邮箱地址。

fromName:收件人看到的发件人名称。

to:收件人邮箱地址。

replyTo:收件人回复邮件时的邮件地址。

cc:抄送人邮箱地址,多个用逗号分隔。

bcc:秘密抄送人邮箱地址,多个用逗号分隔。

attachments:附件地址,允许多个。

MailTool mail = Xmtool.Mail("smtp.126.com", 25, "test", "test@123");
mail.Send("测试邮件", "<html><body>hello world.</body></html>", "utf-8", "softwaiter@126.com", 
          "softwaiter", "shoujianren@126.com", "softwaiter@126.com",
          "lingdao@126.com,lingdao2@126.com", "", "附件.xlsx");

5. 发送网页邮件(简化版)

public void SendHtml(string subject, string body, string from, string to, params string[] attachments)
参数说明

subject:邮件标题。

body:邮件内容(应该是网页源码)

from:收件人看到的发件人邮箱地址。

to:收件人邮箱地址。

attachments:附件地址,允许多个。

MailTool mail = Xmtool.Mail("smtp.126.com", 25, "test", "test@123");
mail.Send("测试邮件", "<html><body>hello world.</body></html>", "softwaiter@126.com", "shoujianren@126.com", "附件.xlsx");

*注*:发送普通邮件和发送网页邮件都提供了对应的异步方法SendAsync、SendHtmlAsync,参数和同步方法相同。

有了以上方法,每次需要发送邮件,只需要两步即可完成。
第一步:通过Mail方法获取邮件发送对象。
第二步:使用获取到的Mail邮件发送对象,调用Send、SendHtml、SendAsync、SendHtmlAsync其中的任意一个方法完成邮件发送。



【Github源码】

与开源.NetCore通用工具库Xmtool使用连载 - 发送邮件篇相似的内容:

开源.NetCore通用工具库Xmtool使用连载 - 发送邮件篇

#### [【Github源码】](https://github.com/softwaiter/Xmtool) [《上一篇》](https://www.cnblogs.com/bcbr/p/17393628.html) 介绍了Xmtool工具库中的随机值类库,今天我们继续为大家介绍其中的邮件发送类库

开源.NetCore通用工具库Xmtool使用连载 - 发送短信篇

### [【Github源码】](https://github.com/softwaiter/Xmtool) [《上一篇》](https://www.cnblogs.com/bcbr/p/17421734.html) 介绍了Xmtool工具库中的发送邮件类库,今天我们继续为大家介绍其中的发送短信类库

开源.NetCore通用工具库Xmtool使用连载 - XML操作篇

### [【Github源码】](https://github.com/softwaiter/Xmtool) [《上一篇》](https://www.cnblogs.com/bcbr/p/17447376.html) 介绍了Xmtool工具库中的发送短信类库,今天我们继续为大家介绍其中的XML操作类

开源.NetCore通用工具库Xmtool使用连载 - 随机值篇

【Github源码】 《上一篇》 详细介绍了Xmtool工具库中的散列算法类库,今天我们继续为大家介绍其中的随机值类库。 基于系统提供的Random获取随机值方法已经足够简单和易用,本类库只对日常开发过程中最常用到的生成随机验证码方法进行了封装,后续发现其他有价值的常用随机值需求,会陆续添加到类库中

开源.NetCore通用工具库Xmtool使用连载 - 加密解密篇

【Github源码】 《上一篇》详细介绍了Xmtool工具库中的正则表达式类库,今天我们继续为大家介绍其中的加密解密类库。 在开发过程中我们经常会遇到需要对数据进行加密和解密的需求,例如密码的加密、接口传输数据的加密等;当前类库中只封装了Base64、AES两种加密解密方法,因为C#提供了几乎我们能

开源.NetCore通用工具库Xmtool使用连载 - 散列算法篇

【Github源码】 《上一篇》详细介绍了Xmtool工具库中的加解密类库,今天我们继续为大家介绍其中的散列算法类库。 散列算法在某些特殊场景也可以当做加密方法使用;其特点是不可逆,同一内容每次散列值绝对一致,所以也可用作对数据内容是否被篡改的校验方法;或者其他需要唯一性编码的场景;本类库提供了MD

开源.NetCore通用工具库Xmtool使用连载 - HTTP请求篇

### [【Github源码】](https://github.com/softwaiter/Xmtool) [《上一篇》](https://www.cnblogs.com/bcbr/p/17608881.html) 介绍了Xmtool工具库中的XML操作类库,今天我们继续为大家介绍其中的HTTP请

开源.NetCore通用工具库Xmtool使用连载 - 图形验证码篇

### [【Github源码】](https://github.com/softwaiter/Xmtool) [《上一篇》](https://www.cnblogs.com/bcbr/p/17624230.html) 介绍了Xmtool工具库中的Web操作类库,今天我们继续为大家介绍其中的图形验证码

开源.NetCore通用工具库Xmtool使用连载 - 扩展动态对象篇

【Github源码】 《上一篇》 介绍了Xmtool工具库中的图形验证码类库,今天我们继续为大家介绍其中的扩展动态对象类库。 扩展动态对象是整个工具库中最重要的一个设计。在软件开发过程中,我们经常需要定义各种各样的数据对象;例如:用于参数传递的数据实体类、用于接口返回结果的Json对象等等。 //

MongoDB从入门到实战之.NET Core使用MongoDB开发ToDoList系统(8)-Ant Design Blazor前端框架搭建

前言 前面的章节我们介绍了一些值得推荐的Blazor UI组件库,通过该篇文章的组件库介绍最终我选用Ant Design Blazor这个UI框架作为ToDoList系统的前端框架。因为在之前的工作中有使用过Ant Design Vue、Ant Design Angular习惯并且喜欢Ant Des