1. Prodotti
  2.   E-mail
  3.   .NET
  4.   MailKit
 
  

Libreria .NET open source per IMAP, POP3 e SMTP

Libreria C# .NET gratuita per la generazione di messaggi con allegati, crittografa/decodifica messaggi con PGP/MIME. 

MailKit è una libreria .NET Open Source per IMAP, POP3 e SMTP. È una libreria client di posta multipiattaforma basata su MimeKit. Il progetto mira a fornire implementazioni client SMTP, POP3 e IMAP robuste, complete e conformi a RFC.

L'API supporta diverse importanti funzionalità relative all'autenticazione SASL, supporto proxy, client SMTP, client POP3, client IMAP4, ordinamento lato client e threading dei messaggi.

Previous Next

Guida introduttiva a MailKit

Il modo più semplice per installare MailKit è tramite NuGet. Per utilizzarlo dalla Console di gestione pacchetti di Visual Studio, immettere il comando seguente.

installa Mailkit tramite NuGet

Install-Package MailKit  

Installa Mailkit tramite GitHub 

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

Crea nuovi messaggi tramite .NET

La libreria Open Source API MailKit consente agli sviluppatori di software di creare messaggi MIME con pochi semplici comandi. Una TextPart è una parte MIME del nodo foglia con un tipo di supporto di testo. Il primo argomento del costruttore TextPart specifica il sottotipo di supporto, in questo caso semplice. Un altro sottotipo di media che probabilmente conosci è il sottotipo HTML. Il modo più semplice per ottenere e impostare sia il contenuto della stringa della parte MIME è la proprietà Text.

La libreria Open Source API MailKit consente agli sviluppatori di software di creare messaggi MIME con pochi semplici comandi. Una TextPart è una parte MIME del nodo foglia con un tipo di supporto di testo. Il primo argomento del costruttore TextPart specifica il sottotipo di supporto, in questo caso semplice. Un altro sottotipo di media che probabilmente conosci è il sottotipo HTML. Il modo più semplice per ottenere e impostare il contenuto della stringa della parte MIME è la proprietà Text.

Genera e invia messaggi gratuitamente 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);
}                  

Genera messaggio con allegati utilizzando l'API .NET

L'API MailKit fornisce funzionalità per la generazione di un messaggio con allegati all'interno di applicazioni .NET. Gli allegati sono come qualsiasi altro MimePart; la differenza principale è che contengono un'intestazione di disposizione del contenuto che contiene il valore dell'allegato invece dell'intestazione in linea o nessuna intestazione di disposizione del contenuto. Per inviare sia una versione testuale/HTML che una versione testuale/normale del messaggio, è necessario creare una TextPart per ciascuna parte e quindi aggiungerle a una multiparte/alternativa.

Crea messaggio con allegati tramite 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;
 

Crittografa/Decrittografa i messaggi con PGP/MIME

La libreria MailKit fornisce funzionalità per crittografare i messaggi di posta elettronica con PGP/MIME all'interno di applicazioni .NET. Il PGP/MIME utilizza una parte MIME con un tipo MIME multipart/crittografato per incapsulare i dati crittografati. Se si desidera crittografare un messaggio, è sempre un approccio migliore utilizzare SecureMailboxAddress invece di un MailboxAddress per ogni destinatario, che consentirà agli utenti di specificare l'impronta digitale univoca della chiave PGP di ciascun destinatario.

Crittografia dei messaggi con PGP/MIME tramite 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);
  }
}

Decrittografia dei messaggi 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;
  }
}
 Italiano