Библиотека .NET с открытым исходным кодом для IMAP, POP3 и SMTP
Бесплатная библиотека C# .NET для создания сообщений с вложениями, шифрования и расшифровки сообщений с помощью PGP/MIME.
MailKit — это библиотека .NET с открытым исходным кодом для IMAP, POP3 и SMTP. Это кроссплатформенная библиотека почтового клиента, построенная на основе MimeKit. Проект направлен на предоставление надежных, полнофункциональных и RFC-совместимых клиентских реализаций SMTP, POP3 и IMAP.
API поддерживает несколько важных функций, связанных с аутентификацией SASL, поддержкой прокси, SMTP-клиентом, POP3-клиентом, IMAP4-клиентом, сортировкой на стороне клиента и потоковой передачей сообщений.
Начало работы с MailKit
Самый простой способ установить MailKit — через NuGet. Чтобы использовать его из консоли диспетчера пакетов Visual Studio, введите следующую команду.
установить Mailkit через NuGet
Install-Package MailKit
Установите Mailkit через GitHub
git clone --recursive https://github.com/jstedfast/MailKit.git
Создание новых сообщений через .NET
Библиотека MailKit API с открытым исходным кодом позволяет разработчикам программного обеспечения создавать сообщения 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; основное отличие состоит в том, что они содержат заголовок content-disposition, содержащий значение вложения, вместо встроенного или вообще не содержат заголовка Content-Disposition. Чтобы отправить как текстовую/HTML-версию, так и текстовую/обычную версию сообщения, вам нужно создать TextPart для каждой части, а затем добавить их в multipart/alternative.
Создать сообщение с вложениями через С#
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 с multipart/encrypted 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;
}
}