โอเพ่นซอร์ส .NET Library สำหรับ IMAP, POP3 & SMTP
ไลบรารี C# .NET ฟรีสำหรับสร้างข้อความพร้อมไฟล์แนบ เข้ารหัส/ถอดรหัสข้อความด้วย PGP/MIME
MailKit เป็นไลบรารีโอเพ่นซอร์ส .NET สำหรับ IMAP, POP3 และ SMTP เป็นไลบรารีไคลเอนต์เมลข้ามแพลตฟอร์มที่สร้างขึ้นบน MimeKit โปรเจ็กต์นี้มีจุดมุ่งหมายเพื่อมอบการใช้งานไคลเอ็นต์ SMTP, POP3 และ IMAP ที่แข็งแกร่ง มีคุณสมบัติครบถ้วน และสอดคล้องกับ RFC
API รองรับคุณสมบัติที่สำคัญหลายประการที่เกี่ยวข้องกับการตรวจสอบสิทธิ์ SASL, การสนับสนุนพร็อกซี, ไคลเอนต์ SMTP, ไคลเอนต์ POP3, ไคลเอนต์ IMAP4, การเรียงลำดับฝั่งไคลเอ็นต์และเธรดของข้อความ
เริ่มต้นใช้งาน MailKit
วิธีที่ง่ายที่สุดในการติดตั้ง MailKit คือผ่าน NuGet หากต้องการใช้งานจาก Package Manager Console ของ Visual Studio โปรดป้อนคำสั่งต่อไปนี้
ติดตั้ง Mailkit ผ่าน NuGet
Install-Package MailKit
ติดตั้ง Mailkit ผ่าน GitHub
git clone --recursive https://github.com/jstedfast/MailKit.git
สร้างข้อความใหม่ผ่าน .NET
ไลบรารี Open Source API MailKit ช่วยให้นักพัฒนาซอฟต์แวร์สร้างข้อความ MIME ด้วยคำสั่งง่ายๆ ไม่กี่คำสั่ง TextPart คือส่วน MIME ของโหนดปลายสุดที่มีประเภทสื่อข้อความ อาร์กิวเมนต์แรกของคอนสตรัคเตอร์ TextPart ระบุชนิดย่อยสื่อ ในกรณีนี้ ธรรมดา ประเภทย่อยของสื่ออื่นที่คุณอาจคุ้นเคยคือประเภทย่อย HTML วิธีที่ง่ายที่สุดในการรับและตั้งค่าทั้งเนื้อหาสตริงของส่วน MIME คือคุณสมบัติ Text
ไลบรารี Open Source API MailKit ช่วยให้นักพัฒนาซอฟต์แวร์สร้างข้อความ MIME ด้วยคำสั่งง่ายๆ ไม่กี่คำสั่ง TextPart คือส่วน MIME ของโหนดปลายสุดที่มีประเภทสื่อข้อความ อาร์กิวเมนต์แรกของคอนสตรัคเตอร์ TextPart ระบุชนิดย่อยสื่อ ในกรณีนี้ ธรรมดา ประเภทย่อยของสื่ออื่นที่คุณอาจคุ้นเคยคือประเภทย่อย HTML วิธีที่ง่ายที่สุดในการรับและตั้งค่าเนื้อหาสตริงของส่วน MIME คือคุณสมบัติ Text
สร้างและส่งข้อความฟรีโดยใช้ C #
var message = new MimeMessage();
message.From.Add(new MailboxAddress("fred", "This email address is being protected from spam-bots. You need JavaScript enabled to view it."));
message.To.Add(new MailboxAddress("frans", "This email address is being protected from spam-bots. You need JavaScript enabled to view it."));
message.Subject = "FileFormat ";
message.Body = new TextPart("plain")
{
Text = "File Format Developer Guide"
};
using (var client = new SmtpClient())
{
// For demo-purposes,
client.ServerCertificateValidationCallback = (s, c, h, e) => true;
client.Connect("smtp.test.com", 587, false);
// Note: only needed if the SMTP server requires authentication
client.Authenticate("frans", "password");
client.Send(message);
client.Disconnect(true);
}
สร้างข้อความพร้อมไฟล์แนบโดยใช้ .NET API
MailKit API มีคุณสมบัติสำหรับการสร้างข้อความพร้อมไฟล์แนบภายในแอปพลิเคชัน .NET สิ่งที่แนบมานั้นเหมือนกับ MimePart อื่น ๆ ความแตกต่างหลัก ๆ คือ มีส่วนหัวการจัดการเนื้อหาที่ถือค่าของสิ่งที่แนบ แทนที่จะเป็นแบบอินไลน์หรือไม่มีส่วนหัวการจัดการเนื้อหาเลย ในการส่งข้อความทั้งแบบข้อความ/HTML และแบบข้อความ/แบบธรรมดา คุณต้องสร้าง TextPart สำหรับแต่ละส่วนแล้วเพิ่มลงในหลายส่วน/ทางเลือก
สร้างข้อความพร้อมไฟล์แนบผ่าน C#
var message = new MimeMessage ();
message.From.Add (new MailboxAddress ("Joey", "joey@friends.com"));
message.To.Add (new MailboxAddress ("Alice", "alice@wonderland.com"));
message.Subject = "How you doin?";
// create our message text, just like before (except don't set it as the message.Body)
var body = new TextPart ("plain") {
Text = @"Hey Alice,
What are you up to this weekend? Monica is throwing one of her parties on
Saturday and I was hoping you could make it.
Will you be my +1?
-- Joey
"
};
// create an image attachment for the file located at path
var attachment = new MimePart ("image", "gif") {
Content = new MimeContent (File.OpenRead (path), ContentEncoding.Default),
ContentDisposition = new ContentDisposition (ContentDisposition.Attachment),
ContentTransferEncoding = ContentEncoding.Base64,
FileName = Path.GetFileName (path)
};
// now create the multipart/mixed container to hold the message text and the
// image attachment
var multipart = new Multipart ("mixed");
multipart.Add (body);
multipart.Add (attachment);
// now set the multipart/mixed as the message body
message.Body = multipart;
เข้ารหัส/ถอดรหัสข้อความด้วย PGP/MIME
ไลบรารี MailKit มีคุณสมบัติสำหรับการเข้ารหัสข้อความอีเมลด้วย PGP/MIME ภายในแอปพลิเคชัน .NET PGP/MIME ใช้ส่วน MIME ที่มีประเภท mime แบบหลายส่วน/เข้ารหัสเพื่อห่อหุ้มข้อมูลที่เข้ารหัส หากคุณต้องการเข้ารหัสข้อความ เป็นวิธีที่ดีกว่าเสมอในการใช้ SecureMailboxAddress แทน MailboxAddress สำหรับผู้รับทุกคน ซึ่งจะทำให้ผู้ใช้สามารถระบุลายนิ้วมือที่ไม่ซ้ำกันของคีย์ PGP ของผู้รับแต่ละราย
การเข้ารหัสข้อความด้วย PGP/MIME ผ่าน C#
public void Encrypt (MimeMessage message)
{
// encrypt our message body using our custom GnuPG cryptography context
using (var ctx = new MyGnuPGContext ()) {
// Note: this assumes that each of the recipients has a PGP key associated
// with their email address in the user's public keyring.
//
// If this is not the case, you can use SecureMailboxAddresses instead of
// normal MailboxAddresses which would allow you to specify the fingerprint
// of their PGP keys. You could also choose to use one of the Encrypt()
// overloads that take a list of PgpPublicKeys.
message.Body = MultipartEncrypted.Encrypt (ctx, message.To.Mailboxes, message.Body);
}
}
การถอดรหัสข้อความ PGP/MIME
public MimeEntity Decrypt (MimeMessage message)
{
if (message.Body is MultipartEncrypted) {
// the top-level MIME part of the message is encrypted using PGP/MIME
var encrypted = (MultipartEncrypted) entity;
return encrypted.Decrypt ();
} else {
// the top-level MIME part is not encrypted
return message.Body;
}
}