[.Net] 透過 MailKit 發送郵件

  • 1252
  • 0

微軟官方由於 System.Net.Mail 的 SmtpClient 不支援許多新的協定,官方建議使用MailKit。

使用方法

環境配置:

  1. LINQPad 7
  2. .Net 6
  3. MailKit 3.1.1
  4. GoogleMail
Gmail設定
將IMAP存取設為啟用IMAP
帳戶管理安全性,開啟低安全性
建立Mail
	// 建立Mail類別
    var message = new MimeMessage();
    
    // 添加寄件人(下兩種寫法均可)
    //message.From.Add(MailboxAddress.Parse("From@gmail.com"));
    // 可設定名稱
    message.To.Add(new MailboxAddress("FromName","From@gmail.com"));
    
    // 添加收件人(下兩種寫法均可)
    //message.From.Add(MailboxAddress.Parse("To@gmail.com"));
    // 可設定名稱
    message.To.Add(new MailboxAddress("ToName","To@icloud.com"));
    
    
    // 設定主旨標題
    message.Subject = "[測試通知]標題";
    
    // 建立內文類別
    var mailBody = new BodyBuilder();
    
    // 設定存文字內文
    mailBody.TextBody = "純文字";
    
    // 設定為HTML內文
    mailBody.HtmlBody = "<p>HTML文字</p> <br>";
    
    // 設定附件
    mailBody.Attachments.Add(@"C:\temp\testFile.txt");
    
    // 設定Mail內容
    message.Body = mailBody.ToMessageBody();

MimeMessage常用屬性:

屬性類別說明
FromInternetAddressList寄件人(多於一個的時候,實際的寄件者要設在Sender)
SenderMailboxAddress實際寄件人
ToInternetAddressList收件人
CcInternetAddressList副本
BccInternetAddressList秘密副本
ReplyToInternetAddressList回覆的收件者 (預設為 From)
SubjectString郵件標題
BodyMimeEntity郵件內容(文字、附件、 HTML ... 等)
寄送郵件

    // 建立SMTPClient
    using (var client = new SmtpClient())
    {
        // 此範例已Gmail為例
        var host = "smtp.gmail.com";
        var port = 587;

        // 預設為(Auto)也可以如有錯誤可透過明確定義來試試
        //client.Connect(host,port);
        // 明確定義透過TLS(StartTls)連線建立連線服務 
        client.Connect(host,port,SecureSocketOptions.StartTls);
        
        // 透過指定用戶發送:用戶名、密碼驗證
        client.Authenticate("userName@gmail.com","password");
        
        // 發送Mail
        client.Send(message);
        
        // 斷開連接(ture)
        client.Disconnect(true);
        
        Console.WriteLine("Done");
    }

完整代碼

https://gist.github.com/Yuno-Liu/4709bb520f2588bd9acde2cc9f085634

參考資料

http://www.mimekit.net/docs/html/T_MimeKit_MimeMessage.htm

https://github.com/jstedfast/MailKit