MimeKit / MailKit 支持最新的國際化的電子郵件標準,是.NET 中為一個支持完整支持這些標準電子郵件庫,最近正式發佈了1.0版本。如果你想做所有與的電子郵件相關的事情,看看 MimeKit 和 MailKit。我保證你不會失望,它支持.NET/Mono的所有平臺,包括行動電話、平板等 ...
MimeKit / MailKit 支持最新的國際化的電子郵件標準,是.NET 中為一個支持完整支持這些標準電子郵件庫,最近正式發佈了1.0版本。如果你想做所有與的電子郵件相關的事情,看看 MimeKit 和 MailKit。我保證你不會失望,它支持.NET/Mono的所有平臺,包括行動電話、平板等.
廢話不多說,直接上代碼:
using MimeKit; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using MailKit.Net.Smtp; using System.IO; namespace NetSmtpClient { class Program { const string mailFrom = "[email protected]"; const string mailTo = "[email protected]"; const string mailFromAccount = "[email protected]"; const string mailPassword = "xxxx"; const string path = @"E:\GitHub\TestMailClient\NetSmtpClient\.NETFoundation.png"; static void Main(string[] args) { TestSmtpClient(); TestMailKit(); } private static void TestMailKit() { var message = new MimeMessage(); message.From.Add(new MailboxAddress("geffzhang", mailFrom)); message.To.Add(new MailboxAddress("geffzhang", mailTo)); message.Subject = string.Format("C#自動發送郵件測試 From geffzhang TO {0}", mailTo); var plain = new TextPart("plain") { Text = @"不好意思,我在測試程式,剛纔把QQ號寫錯了,Sorry!" }; var html = new TextPart("html") { Text = @"<p>Hey geffzhang<br> <p>不好意思,我在測試程式,剛纔把QQ號寫錯了,Sorry!<br> <p>-- Geffzhang<br>" }; // create an image attachment for the file located at path var attachment = new MimePart("image", "png") { ContentObject = new ContentObject(File.OpenRead(path), ContentEncoding.Default), ContentDisposition = new ContentDisposition(ContentDisposition.Attachment), ContentTransferEncoding = ContentEncoding.Base64, FileName = Path.GetFileName(path) };
attachment.ContentType.Parameters.Add("GB18030", "name", fileName); attachment.ContentDisposition.Parameters.Add("GB18030", "filename", fileName)var alternative = new Multipart("alternative"); alternative.Add(plain);
alternative.Add(html);
// now create the multipart/mixed container to hold the message text and the
// image attachment
var multipart = new Multipart("mixed");
multipart.Add(alternative); multipart.Add(attachment);
message.Body = multipart;
using (var client = new MailKit.Net.Smtp.SmtpClient())
{
client.Connect("smtp.live.com", 587, false);
// Note: since we don't have an OAuth2 token, disable
// the XOAUTH2 authentication mechanism.
client.AuthenticationMechanisms.Remove("XOAUTH2");
// Note: only needed if the SMTP server requires authentication
client.Authenticate(mailFromAccount, mailPassword); client.Send(message); client.Disconnect(true);
}
}
}
}
上面代碼是smtp發送代碼,這個庫還支持POP3, 和 IMAP 等。