1. 程式人生 > 實用技巧 >使用MailKit傳送郵件

使用MailKit傳送郵件

// MimeMessage可以堪稱MailKit裡的一個郵件物件
var sendMessage = new MimeMessage();

sendMessage.Subject = "主題";

// 可以是一個發件人
sendMessage.Sender=new MailboxAddress("發件人","發件人郵箱");
// 也可以新增多個發件人,二選其一
sendMessage.From.Add(new MailboxAddress("發件人", "發件人郵箱"));

// 新增收件人資訊
messageToSend.To.Add(new MailboxAddress("收件人郵箱"));
// 新增抄送(CC)人資訊
messageToSend.Cc.Add(new MailboxAddress("抄送人郵箱"));

// 郵件正文兩種形式

// 1. 不帶附件
// html
messageToSend.Body = new TextPart(TextFormat.Html) { Text = bodyText };
// 或者純文字
messageToSend.Body = new TextPart(TextFormat.Plain) { Text = bodyText };

// 2. 帶附件
var builder=new BodyBuilder();
builder.TextBody = "郵件正文文字描述";
// 新增附件,需帶完整路徑或者相對路徑
builder.Attachments.Add("test.xlsx");
sendMessage.Body = builder.ToMessageBody();

using (var smtp = new MailKit.Net.Smtp.SmtpClient())
{
    // 1. 註冊郵件傳送成功之後的事件,比如記錄log
    // MessageSent事件裡可以通過args引數,獲得伺服器的響應資訊,以便於記錄Log。
    smtp.MessageSent += (sender, args) =>
    {
        // args.Response
    };
    smtp.ServerCertificateValidationCallback = (s, c, h, e) => true;
    // 2. 連線伺服器
    // 此處以outlook郵箱為例
    // await smtp.ConnectAsync("smtp.office365.com", 587, SecureSocketOptions.StartTls);
    await smtp.ConnectAsync("郵箱伺服器", 埠號, 安全型別);
    // 3. 驗證賬號
    await smtp.AuthenticateAsync("賬號", "密碼");
    // 4. 傳送郵件
    await smtp.SendAsync(sendMessage);
    // 5. 釋放連結
    await smtp.DisconnectAsync(true);
}