選單
GSS 技術部落格
在這個園地裡我們將從技術、專案管理、客戶對談面和大家分享我們多年的經驗,希望大家不管是喜歡或是有意見,都可以回饋給我們,讓我們有機會和大家對話並一起成長!
若有任何問題請來信:gss_crm@gss.com.tw
3 分鐘閱讀時間 (561 個字)

[.Net Core] 使用 MailKit 發送郵件

mailkit

之前工作上有需要使用 .Net Core 去發送郵件,
當時看到 .Net 有函式庫可以用,二話不說就直接拿來用

結果之後被同事告知,
由於 System.Net.Mail 的 SmtpClient 不支援許多新的協定,已經被微軟官方棄用了!

而微軟也在文件中,欽點了一位處理郵件的接班人 ─ MailKit

今天就藉著這個機會,來簡單的看看如何利用 MailKit 發送郵件~


MailKit

簡單來說, MailKit 是一個基於 MimeKit 、採用 MIT 授權條款 跨平台, 支援 IMAPPOP3SMTP .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(); 

MimeMessage 常用的屬性有:

屬性 類別 用途
From
InternetAddressList 寄件人
(多於一個的時候,
實際的寄件者要設在Sender)
SenderMailboxAddress
實際的寄件人
ToInternetAddressList收件人
Cc
InternetAddressList副本
Bcc
InternetAddressList秘密副本
ReplyTo
InternetAddressList回覆的收件者 (預設為 From)
SubjectString郵件標題
BodyMimeEntity郵件內容
(文字、附件、 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
之後有機會再介紹囉~

LINQ基本介紹
Disqus - Blog留言板功能

相關文章

 

評論

尚無評論
已經注冊了? 這裡登入
Guest
2024/05/10, 週五

Captcha 圖像