之前工作上有需要使用 .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 !
之後有機會再介紹囉~