Nyílt forráskódú .NET-könyvtár IMAP-hoz, POP3-hoz és SMTP-hez
Ingyenes C# .NET-könyvtár üzenetek generálásához mellékletekkel, üzenetek titkosítása/dekódolása PGP/MIME segítségével.
A MailKit egy nyílt forráskódú .NET-könyvtár IMAP, POP3 és SMTP protokollokhoz. Ez egy többplatformos levelezőkliens-könyvtár, amely a MimeKit tetejére épült. A projekt célja egy robusztus, teljes funkcionalitású és RFC-kompatibilis SMTP, POP3 és IMAP kliens implementáció biztosítása.
Az API számos fontos szolgáltatást támogat a SASL hitelesítéshez, a proxy támogatáshoz, az SMTP klienshez, a POP3 klienshez, az IMAP4 klienshez, az ügyféloldali rendezéshez és az üzenetek szálkezeléséhez kapcsolódóan.
A MailKit használatának megkezdése
A MailKit telepítésének legegyszerűbb módja a NuGet. A Visual Studio Package Manager konzoljából való használathoz írja be a következő parancsot.
telepítse a Mailkit-et a NuGet segítségével
Install-Package MailKit
Telepítse a Mailkit-et a GitHubon keresztül
git clone --recursive https://github.com/jstedfast/MailKit.git
Hozzon létre új üzeneteket a .NET-en keresztül
A nyílt forráskódú API MailKit könyvtár lehetővé teszi a szoftverfejlesztők számára, hogy néhány egyszerű paranccsal MIME-üzeneteket hozzanak létre. A TextPart egy levél-csomópont MIME-rész szöveges médiatípussal. A TextPart konstruktor első argumentuma a média-altípust adja meg, ebben az esetben a sima. Egy másik médiaaltípus, amelyet valószínűleg ismer, a HTML altípus. A legegyszerűbb módja a MIME-rész karakterlánc-tartalmának lekérésének és beállításának a Text tulajdonság.
A nyílt forráskódú API MailKit könyvtár lehetővé teszi a szoftverfejlesztők számára, hogy néhány egyszerű paranccsal MIME-üzeneteket hozzanak létre. A TextPart egy levél-csomópont MIME-rész szöveges médiatípussal. A TextPart konstruktor első argumentuma a média-altípust adja meg, ebben az esetben a sima. Egy másik médiaaltípus, amelyet valószínűleg ismer, a HTML altípus. A MIME-rész karakterlánc-tartalmának lekérésére és beállítására a legegyszerűbb módja a Text tulajdonság.
Ingyenesen generáljon és küldjön üzenetet a C# használatával
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);
}
Üzenet létrehozása mellékletekkel a .NET API használatával
A MailKit API szolgáltatásokat biztosít a .NET-alkalmazásokon belüli mellékletekkel rendelkező üzenetek létrehozásához. A mellékletek olyanok, mint bármely más MimePart; a fő különbség az, hogy tartalmazzák a melléklet tartalom-elrendezési fejlécét a beépített fejléc helyett, vagy egyáltalán nem tartalmaznak Content-Disposition fejlécet. Az üzenet szöveges/HTML és szöveges/sima változatának kiküldéséhez minden részhez létre kell hoznia egy TextPart-ot, majd hozzá kell adnia egy többrészes/alternatívához.
Üzenet létrehozása mellékletekkel a C# segítségével
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;
Üzenetek titkosítása/dekódolása PGP/MIME segítségével
A MailKit könyvtár szolgáltatásokat nyújt az e-mail üzenetek PGP/MIME-vel történő titkosításához .NET-alkalmazásokon belül. A PGP/MIME többrészes/titkosított MIME-típusú MIME-részt használ a titkosított adatok beágyazásához. Ha titkosítani szeretne egy üzenetet, mindig jobb megközelítés a SecureMailboxAddress használata a MailboxAddress helyett minden címzettnél, amely lehetővé teszi a felhasználók számára, hogy meghatározzák az egyes címzettek PGP-kulcsának egyedi ujjlenyomatát.
Üzenetek titkosítása PGP/MIME-vel C#-n keresztül
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 üzenetek visszafejtése
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;
}
}