Biblioteca .NET de código aberto para IMAP, POP3 e SMTP
Biblioteca C# .NET gratuita para gerar mensagens com anexos, criptografar/descriptografar mensagens com PGP/MIME.
MailKit é uma biblioteca .NET de código aberto para IMAP, POP3 e SMTP. É uma biblioteca cliente de e-mail multiplataforma construída sobre o MimeKit. O projeto visa fornecer implementações de cliente SMTP, POP3 e IMAP robustas, completas e compatíveis com RFC.
A API suporta vários recursos importantes relacionados à autenticação SASL, suporte a proxy, cliente SMTP, cliente POP3, cliente IMAP4, classificação do lado do cliente e segmentação de mensagens.
Introdução ao MailKit
A maneira mais fácil de instalar o MailKit é via NuGet. Para usá-lo no Console do Gerenciador de Pacotes do Visual Studio, digite o seguinte comando.
instale o Mailkit via NuGet
Install-Package MailKit
Instale o Mailkit pelo GitHub
git clone --recursive https://github.com/jstedfast/MailKit.git
Criar novas mensagens via .NET
A biblioteca Open Source API MailKit permite que desenvolvedores de software criem mensagens MIME com alguns comandos simples. Um TextPart é uma parte MIME de nó folha com um tipo de mídia de texto. O primeiro argumento para o construtor TextPart especifica o subtipo de mídia, neste caso, simples. Outro subtipo de mídia com o qual você provavelmente está familiarizado é o subtipo HTML. A maneira mais fácil de obter e definir o conteúdo da string da parte MIME é a propriedade Text.
A biblioteca Open Source API MailKit permite que desenvolvedores de software criem mensagens MIME com poucos comandos simples. Um TextPart é uma parte MIME de nó folha com um tipo de mídia de texto. O primeiro argumento para o construtor TextPart especifica o subtipo de mídia, neste caso, simples. Outro subtipo de mídia com o qual você provavelmente está familiarizado é o subtipo HTML. A maneira mais fácil de obter e definir o conteúdo da string da parte MIME é a propriedade Text.
Gerar e enviar mensagens grátis usando 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);
}
Gerar mensagem com anexos usando a API .NET
A API MailKit fornece recursos para gerar uma mensagem com anexos dentro de aplicativos .NET. Os anexos são como qualquer outro MimePart; a principal diferença é que eles contêm um cabeçalho de disposição de conteúdo que mantém o valor do anexo em vez de inline ou nenhum cabeçalho de disposição de conteúdo. Para enviar uma versão de texto/HTML e uma versão de texto/simples da mensagem, você precisa criar uma TextPart para cada parte e adicioná-las a uma multiparte/alternativa.
Criar mensagem com anexos 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;
Criptografar/descriptografar mensagens com PGP/MIME
A biblioteca MailKit fornece recursos para criptografar mensagens de e-mail com PGP/MIME dentro de aplicativos .NET. O PGP/MIME usa uma parte MIME com um tipo mime multiparte/criptografado para encapsular dados criptografados. Se você deseja criptografar uma mensagem, é sempre uma abordagem melhor usar SecureMailboxAddress em vez de um MailboxAddress para cada destinatário, o que permitirá que os usuários especifiquem a impressão digital exclusiva da chave PGP de cada destinatário.
Criptografando mensagens com 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);
}
}
Descriptografando mensagens 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;
}
}