## 一:背景 ### 1. 講故事 上周有位朋友在 github 上向我求助,說線程都被卡住了,讓我幫忙看下,截圖如下: ![](https://img2023.cnblogs.com/blog/214741/202305/214741-20230522152950051-1097264208.p ...
【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", "[email protected]",
"softwaiter", "[email protected]", "[email protected]",
"[email protected],[email protected]", "", "附件.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("測試郵件", "您好,這是一封測試郵件。", "[email protected]", "[email protected]", "附件.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", "[email protected]",
"softwaiter", "[email protected]", "[email protected]",
"[email protected],[email protected]", "", "附件.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>", "[email protected]", "[email protected]", "附件.xlsx");
*註*:發送普通郵件和發送網頁郵件都提供了對應的非同步方法SendAsync、SendHtmlAsync,參數和同步方法相同。
有了以上方法,每次需要發送郵件,只需要兩步即可完成。
第一步:通過Mail方法獲取郵件發送對象。
第二步:使用獲取到的Mail郵件發送對象,調用Send、SendHtml、SendAsync、SendHtmlAsync其中的任意一個方法完成郵件發送。