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.
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;
}
}