Open Source .NET Library pro IMAP, POP3 a SMTP
Bezplatná knihovna C# .NET pro generování zpráv s přílohami, šifrování/dešifrování zpráv pomocí PGP/MIME.
MailKit je knihovna Open Source .NET pro IMAP, POP3 a SMTP. Jedná se o multiplatformní knihovnu poštovního klienta postavenou na MimeKitu. Cílem projektu je poskytnout robustní, plně funkční a RFC kompatibilní klientské implementace SMTP, POP3 a IMAP.
Rozhraní API podporuje několik důležitých funkcí souvisejících s ověřováním SASL, podporou proxy, klientem SMTP, klientem POP3, klientem IMAP4, tříděním na straně klienta a vlákny zpráv.
Začínáme s MailKit
Nejjednodušší způsob, jak nainstalovat MailKit, je přes NuGet. Chcete-li jej použít z konzoly Package Manager Console sady Visual Studio, zadejte následující příkaz.
nainstalovat Mailkit přes NuGet
Install-Package MailKit
Nainstalujte Mailkit přes GitHub
git clone --recursive https://github.com/jstedfast/MailKit.git
Vytvářejte nové zprávy přes .NET
Knihovna Open Source API MailKit umožňuje vývojářům softwaru vytvářet zprávy MIME pomocí několika jednoduchých příkazů. TextPart je část MIME s koncovým uzlem s typem textového média. První argument konstruktoru TextPart určuje podtyp média, v tomto případě plain. Dalším podtypem médií, který pravděpodobně znáte, je podtyp HTML. Nejjednodušší způsob, jak získat a nastavit obsah řetězce části MIME, je vlastnost Text.
Knihovna Open Source API MailKit umožňuje vývojářům softwaru vytvářet zprávy MIME pomocí několika jednoduchých příkazů. TextPart je část MIME s koncovým uzlem s textovým typem média. První argument konstruktoru TextPart určuje podtyp média, v tomto případě plain. Dalším podtypem médií, který pravděpodobně znáte, je podtyp HTML. Nejjednodušší způsob, jak získat a nastavit obsah řetězce části MIME, je vlastnost Text.
Generování a odesílání zpráv zdarma pomocí 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);
}
Generujte zprávu s přílohami pomocí .NET API
MailKit API poskytuje funkce pro generování zpráv s přílohami uvnitř aplikací .NET. Přílohy jsou stejné jako jakékoli jiné MimePart; hlavní rozdíl je v tom, že obsahují hlavičku content-disposition obsahující hodnotu přílohy namísto vložené nebo žádné hlavičky Content-Disposition. Chcete-li odeslat textovou/HTML i textovou/prostou verzi zprávy, musíte pro každou část vytvořit TextPart a poté je přidat do vícedílné/alternativní.
Vytvořit zprávu s přílohami přes 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;
Šifrování/dešifrování zpráv pomocí PGP/MIME
Knihovna MailKit poskytuje funkce pro šifrování e-mailových zpráv pomocí PGP/MIME v aplikacích .NET. PGP/MIME používá část MIME s vícedílným/šifrovaným typem mime k zapouzdření šifrovaných dat. Pokud chcete zašifrovat zprávu, je vždy lepší použít SecureMailboxAddress místo MailboxAddress pro každého příjemce, což uživatelům umožní specifikovat jedinečný otisk PGP klíče každého příjemce.
Šifrování zpráv pomocí PGP/MIME přes 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);
}
}
Dešifrování PGP/MIME zpráv
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;
}
}