Thư viện .NET mã nguồn mở cho IMAP, POP3 & SMTP
Thư viện C # .NET miễn phí để tạo tin nhắn có tệp đính kèm, mã hóa / giải mã tin nhắn với PGP / MIME.
MailKit là một thư viện .NET mã nguồn mở cho IMAP, POP3 và SMTP. Nó là một thư viện ứng dụng thư khách đa nền tảng được xây dựng trên MimeKit. Dự án nhằm mục đích cung cấp triển khai ứng dụng khách SMTP, POP3 và IMAP mạnh mẽ, đầy đủ tính năng và tuân thủ RFC.
API hỗ trợ một số tính năng quan trọng liên quan đến Xác thực SASL, hỗ trợ proxy, ứng dụng khách SMTP, ứng dụng khách POP3, ứng dụng khách IMAP4, phân loại phía máy khách và phân luồng thư.
Bắt đầu với MailKit
Cách dễ nhất để cài đặt MailKit là thông qua NuGet. Để sử dụng nó từ Bảng điều khiển Trình quản lý Gói của Visual Studio, vui lòng nhập lệnh sau.
cài đặt Mailkit qua NuGet
Install-Package MailKit
Cài đặt Bộ thư qua GitHub
git clone --recursive https://github.com/jstedfast/MailKit.git
Tạo tin nhắn mới qua .NET
Thư viện MailKit API nguồn mở cho phép các nhà phát triển phần mềm tạo thông báo MIME bằng một vài lệnh đơn giản. TextPart là một phần MIME nút lá với kiểu phương tiện văn bản. Đối số đầu tiên của hàm tạo TextPart chỉ định loại phương tiện con, trong trường hợp này là đơn giản. Một kiểu con phương tiện khác mà bạn có thể quen thuộc là kiểu con HTML. Cách dễ nhất để lấy và đặt cả nội dung chuỗi của phần MIME là thuộc tính Văn bản.
Thư viện MailKit API nguồn mở cho phép các nhà phát triển phần mềm tạo thông báo MIME với một vài lệnh đơn giản. TextPart là một phần MIME nút lá với kiểu phương tiện văn bản. Đối số đầu tiên của hàm tạo TextPart chỉ định loại phương tiện con, trong trường hợp này là đơn giản. Một kiểu con phương tiện khác mà bạn có thể quen thuộc là kiểu con HTML. Cách dễ nhất để lấy và đặt nội dung chuỗi của phần MIME là thuộc tính Văn bản.
Tạo và gửi tin nhắn miễn phí bằng 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);
}
Tạo thông báo có tệp đính kèm bằng cách sử dụng .NET API
MailKit API cung cấp các tính năng để tạo thư có tệp đính kèm bên trong các ứng dụng .NET. Tệp đính kèm cũng giống như bất kỳ MimePart nào khác; sự khác biệt chính là chúng chứa tiêu đề bố trí nội dung giữ giá trị của tệp đính kèm thay vì nội dòng hoặc không có tiêu đề bố trí nội dung nào cả. Để gửi cả văn bản / HTML và phiên bản văn bản / thuần túy của thư, bạn cần tạo TextPart cho từng phần và sau đó thêm chúng vào nhiều phần / thay thế.
Tạo tin nhắn có tệp đính kèm qua 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;
Mã hóa / Giải mã Tin nhắn với PGP / MIME
Thư viện MailKit cung cấp các tính năng để mã hóa thư email bằng PGP / MIME bên trong các ứng dụng .NET. PGP / MIME sử dụng một phần MIME với kiểu mime đa phần / được mã hóa để đóng gói dữ liệu được mã hóa. Nếu bạn muốn mã hóa một tin nhắn, cách tốt hơn là sử dụng SecureMailboxAddress thay vì MailboxAddress cho mọi người nhận, điều này sẽ cho phép người dùng chỉ định dấu vân tay duy nhất của khóa PGP của mỗi người nhận.
Mã hóa tin nhắn với PGP / MIME qua 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);
}
}
Giải mã thông báo 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;
}
}