.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

Библиотеката API MailKit с отворен код позволява на разработчиците на софтуер да създават MIME съобщения с няколко прости команди. TextPart е MIME част на листов възел с тип текстова медия. Първият аргумент на конструктора TextPart указва медийния подтип, в този случай обикновен. Друг подтип медии, с който вероятно сте запознати, е подтипът HTML. Най-лесният начин да получите и зададете както низовото съдържание на MIME частта, е свойството Text.

Библиотеката 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 част с multipart/шифрован 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;
  }
}
 Български