之前工作上有需要使用 .Net Core 去發送郵件,
當時看到 .Net 有函式庫可以用,二話不說就直接拿來用
結果之後被同事告知,
由於 System.Net.Mail 的 SmtpClient 不支援許多新的協定,已經被微軟官方棄用了!
而微軟也在文件中,欽點了一位處理郵件的接班人 ─ MailKit
今天就藉著這個機會,來簡單的看看如何利用 MailKit 發送郵件~
簡單來說, MailKit 是一個基於 MimeKit 、採用 MIT 授權條款、跨平台, 且支援 IMAP 、 POP3 、 SMTP 的 .Net 郵件函式庫
想知道更多的話,可以去 GitHub 看看↓
在發送郵件之前,我們需要先建立郵件的物件 ─ MimeMessage
// 建立郵件
var message = new MimeMessage();
// 添加寄件者
message.From.Add(new MailboxAddress("寄件者名稱", "寄件者信箱"));
// 添加收件者
message.To.Add(new MailboxAddress("收件者名稱", "收件者信箱"));
// 設定郵件標題
message.Subject = "郵件標題";
// 使用 BodyBuilder 建立郵件內容
var bodyBuilder = new BodyBuilder();
// 設定文字內容
bodyBuilder.TextBody = "文字內容";
// 設定 HTML 內容
bodyBuilder.HtmlBody = "<p> HTML 內容 </p>";
// 設定附件
bodyBuilder.Attachments.Add("檔案路徑");
// 設定郵件內容
message.Body = builder.ToMessageBody();
| 屬性 | 類別 | 用途 |
| From |
InternetAddressList | 寄件人 (多於一個的時候, 實際的寄件者要設在Sender) |
| Sender | MailboxAddress | 實際的寄件人 |
| To | InternetAddressList | 收件人 |
| Cc | InternetAddressList | 副本 |
| Bcc | InternetAddressList | 秘密副本 |
| ReplyTo | InternetAddressList | 回覆的收件者 (預設為 From) |
| Subject | String | 郵件標題 |
| Body | MimeEntity | 郵件內容 (文字、附件、 HTML ... 等) |
更多屬性可以參考官方文件↓
郵件設定完之後,就可以發送出去!
using (var client = new SmtpClient ()) {
var hostUrl = "mail.server.com";
var port = 123;
var useSsl = false;
// 連接 Mail Server (郵件伺服器網址, 連接埠, 是否使用 SSL)
client.Connect(hostUrl , port, useSsl);
// 如果需要的話,驗證一下
// client.Authenticate("account", "password");
// 寄出郵件
client.Send(message);
// 中斷連線
client.Disconnect(true);
}
除了發送郵件,前面說到 MailKit 也有支援接收郵件的 IMAP 及 POP3 !
之後有機會再介紹囉~
When you subscribe to the blog, we will send you an e-mail when there are new updates on the site so you wouldn't miss them.
評論