1. Des produits
  2.   E-mail
  3.   .NET
  4.   MailKit
 
  

Bibliothèque .NET open source pour IMAP, POP3 et SMTP

Bibliothèque C# .NET gratuite pour générer des messages avec pièces jointes, chiffrer/déchiffrer des messages avec PGP/MIME. 

MailKit est une bibliothèque Open Source .NET pour IMAP, POP3 et SMTP. Il s'agit d'une bibliothèque de client de messagerie multiplateforme construite sur MimeKit. Le projet vise à fournir des implémentations client SMTP, POP3 et IMAP robustes, complètes et conformes aux RFC.

L'API prend en charge plusieurs fonctionnalités importantes liées à l'authentification SASL, à la prise en charge du proxy, au client SMTP, au client POP3, au client IMAP4, au tri côté client et à l'enfilage des messages.

Previous Next

Premiers pas avec MailKit

Le moyen le plus simple d'installer MailKit est via NuGet. Pour l'utiliser à partir de la console du gestionnaire de packages de Visual Studio, veuillez entrer la commande suivante.

installer Mailkit via NuGet

Install-Package MailKit  

Installer Mailkit via GitHub 

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

Créer de nouveaux messages via .NET

La bibliothèque Open Source API MailKit permet aux développeurs de logiciels de créer des messages MIME avec quelques commandes simples. Un TextPart est une partie MIME de nœud feuille avec un type de média texte. Le premier argument du constructeur TextPart spécifie le sous-type de média, dans ce cas, plain. Un autre sous-type de média que vous connaissez probablement est le sous-type HTML. Le moyen le plus simple d'obtenir et de définir à la fois le contenu de chaîne de la partie MIME est la propriété Text.

La bibliothèque Open Source API MailKit permet aux développeurs de logiciels de créer des messages MIME avec quelques commandes simples. Un TextPart est une partie MIME de nœud feuille avec un type de média texte. Le premier argument du constructeur TextPart spécifie le sous-type de média, dans ce cas, plain. Un autre sous-type de média que vous connaissez probablement est le sous-type HTML. La méthode la plus simple pour obtenir et définir le contenu de chaîne de la partie MIME est la propriété Text.

Générer et envoyer un message gratuitement à l'aide de 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);
}                  

Générer un message avec des pièces jointes à l'aide de l'API .NET

L'API MailKit fournit des fonctionnalités pour générer un message avec des pièces jointes dans les applications .NET. Les pièces jointes sont comme n'importe quel autre MimePart ; la principale différence est qu'ils contiennent un en-tête content-disposition contenant la valeur de la pièce jointe au lieu d'un en-tête en ligne ou pas d'en-tête Content-Disposition. Pour envoyer à la fois une version text/HTML et une version text/plain du message, vous devez créer un TextPart pour chaque partie, puis les ajouter à une multipart/alternative.

Créer un message avec des pièces jointes via 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;
 

Chiffrer/déchiffrer les messages avec PGP/MIME

La bibliothèque MailKit fournit des fonctionnalités pour chiffrer les messages électroniques avec PGP/MIME dans les applications .NET. Le PGP/MIME utilise une partie MIME avec un type MIME multipart/encrypted pour encapsuler les données chiffrées. Si vous souhaitez chiffrer un message, il est toujours préférable d'utiliser SecureMailboxAddress au lieu d'une MailboxAddress pour chaque destinataire, ce qui permettra aux utilisateurs de spécifier l'empreinte unique de la clé PGP de chaque destinataire.

Chiffrement des messages avec PGP/MIME via 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);
  }
}

Décryptage des messages 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;
  }
}
 Français