使用MailKit傳送郵件
阿新 • • 發佈:2020-12-17
// 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); }