Бібліотека .NET з відкритим кодом для IMAP, POP3 і SMTP

Безкоштовна бібліотека C# .NET для створення повідомлень із вкладеннями, шифрування/дешифрування повідомлень за допомогою PGP/MIME. 

MailKit — це бібліотека .NET з відкритим кодом для IMAP, POP3 і SMTP. Це міжплатформна бібліотека поштового клієнта, створена на основі MimeKit. Проект має на меті забезпечити надійну, повнофункціональну та RFC-сумісну клієнтську реалізацію SMTP, POP3 та IMAP.

API підтримує кілька важливих функцій, пов’язаних із автентифікацією SASL, підтримкою проксі-сервера, клієнтом SMTP, клієнтом POP3, клієнтом IMAP4, сортуванням на стороні клієнта та потоками повідомлень.

Previous Next

Початок роботи з MailKit

Найпростіший спосіб інсталювати MailKit за допомогою NuGet. Щоб використовувати його з консолі диспетчера пакетів 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 визначає підтип медіа, у даному випадку plain. Ще один підтип медіа, з яким ви, мабуть, знайомі, це підтип HTML. Найпростіший спосіб отримати та встановити як рядковий вміст частини MIME, це властивість Text.

Бібліотека Open Source API MailKit дозволяє розробникам програмного забезпечення створювати повідомлення MIME за допомогою кількох простих команд. TextPart — це частина MIME кінцевого вузла з текстовим медіа-типом. Перший аргумент конструктора TextPart визначає підтип медіа, у даному випадку plain. Ще один підтип медіа, з яким ви, мабуть, знайомі, це підтип 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 для кожної частини, а потім додати їх до багаточастинної/альтернативної.

Створення повідомлення з вкладеннями за допомогою 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;
  }
}
 Українська