1. Produse
  2.   E-mail
  3.   .NET
  4.   MailKit
 
  

Bibliotecă .NET cu sursă deschisă pentru IMAP, POP3 și SMTP

Bibliotecă C# .NET gratuită pentru generarea de mesaje cu atașamente, criptarea/decriptarea mesajelor cu PGP/MIME. 

MailKit este o bibliotecă Open Source .NET pentru IMAP, POP3 și SMTP. Este o bibliotecă de client de e-mail multiplatformă construită pe MimeKit. Proiectul își propune să ofere implementări robuste, complete și compatibile cu RFC SMTP, POP3 și IMAP.

API-ul acceptă câteva caracteristici importante legate de autentificarea SASL, suportul proxy, clientul SMTP, clientul POP3, clientul IMAP4, sortarea pe partea clientului și threadingul mesajelor.

Previous Next

Noțiuni introductive cu MailKit

Cel mai simplu mod de a instala MailKit este prin NuGet. Pentru a-l utiliza din Consola Manager de pachete a Visual Studio, introduceți următoarea comandă.

instalați Mailkit prin NuGet

Install-Package MailKit  

Instalați Mailkit prin GitHub 

git clone --recursive https://github.com/jstedfast/MailKit.git 

Creați mesaje noi prin .NET

Biblioteca Open Source API MailKit permite dezvoltatorilor de software să creeze mesaje MIME cu câteva comenzi simple. O TextPart este o parte MIME cu nod frunză cu un tip text media. Primul argument al constructorului TextPart specifică subtipul media, în acest caz, simplu. Un alt subtip media cu care probabil sunteți familiarizat este subtipul HTML. Cel mai simplu mod de a obține și de a seta atât conținutul șirului de caractere al părții MIME este proprietatea Text.

Biblioteca Open Source API MailKit permite dezvoltatorilor de software să creeze mesaje MIME cu câteva comenzi simple. O TextPart este o parte MIME cu nod frunză cu un tip media text. Primul argument al constructorului TextPart specifică subtipul media, în acest caz, simplu. Un alt subtip media cu care probabil sunteți familiarizat este subtipul HTML. Cea mai ușoară modalitate de obținere și setare a conținutului șirului părții MIME este proprietatea Text.

Generați și trimiteți mesaje gratuit folosind 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);
}                  

Generați mesaje cu atașamente folosind .NET API

MailKit API oferă caracteristici pentru generarea unui mesaj cu atașamente în aplicațiile .NET. Atașamentele sunt la fel ca orice alt MimePart; diferența principală este că acestea conțin un antet de dispoziție de conținut care deține valoarea atașării în loc de antet inline sau fără antet de dispoziție de conținut. Pentru a trimite atât o versiune text/HTML, cât și o versiune text/pură a mesajului, trebuie să creați o TextPart pentru fiecare parte și apoi să le adăugați la o multiparte/alternativă.

Creați mesaj cu atașamente prin 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;
 

Criptați/Decriptați mesajele cu PGP/MIME

Biblioteca MailKit oferă funcții pentru criptarea mesajelor de e-mail cu PGP/MIME în cadrul aplicațiilor .NET. PGP/MIME folosește o parte MIME cu un tip MIME multipart/criptat pentru a încapsula datele criptate. Dacă doriți să criptați un mesaj, este întotdeauna o abordare mai bună să utilizați SecureMailboxAddress în loc de MailboxAddress pentru fiecare destinatar, ceea ce va permite utilizatorilor să specifice amprenta digitală unică a cheii PGP a fiecărui destinatar.

Criptarea mesajelor cu PGP/MIME prin 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);
  }
}

Decriptarea mesajelor 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;
  }
}
 Română