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

Open source .NET-bibliotheek voor IMAP, POP3 en SMTP

Gratis C# .NET-bibliotheek voor het genereren van berichten met bijlagen, versleutelen/ontsleutelen van berichten met PGP/MIME. 

MailKit is een Open Source .NET-bibliotheek voor IMAP, POP3 en SMTP. Het is een platformonafhankelijke e-mailclientbibliotheek die bovenop MimeKit is gebouwd. Het project heeft tot doel een robuuste, volledig uitgeruste en RFC-conforme SMTP-, POP3- en IMAP-clientimplementaties te bieden.

De API ondersteunt verschillende belangrijke functies met betrekking tot SASL-authenticatie, proxy-ondersteuning, SMTP-client, POP3-client, IMAP4-client, client-side sorteren en threading van berichten.

Previous Next

Aan de slag met MailKit

De eenvoudigste manier om MailKit te installeren is via NuGet. Om het te gebruiken vanuit de Package Manager Console van Visual Studio, voert u de volgende opdracht in.

installeer Mailkit via NuGet

Install-Package MailKit  

Mailkit installeren via GitHub 

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

Nieuwe berichten maken via .NET

Met de Open Source API MailKit-bibliotheek kunnen softwareontwikkelaars MIME-berichten maken met een paar eenvoudige opdrachten. Een TextPart is een MIME-onderdeel met een bladknooppunt met een tekstmediatype. Het eerste argument voor de TextPart-constructor specificeert het media-subtype, in dit geval vlakte. Een ander mediasubtype waarmee u waarschijnlijk bekend bent, is het HTML-subtype. De eenvoudigste manier om zowel de tekenreeksinhoud van het MIME-gedeelte te krijgen en in te stellen, is de eigenschap Text.

Met de Open Source API MailKit-bibliotheek kunnen softwareontwikkelaars MIME-berichten maken met een paar eenvoudige opdrachten. Een TextPart is een MIME-onderdeel met een bladknooppunt met een tekstmediatype. Het eerste argument voor de TextPart-constructor specificeert het media-subtype, in dit geval vlakte. Een ander mediasubtype waarmee u waarschijnlijk bekend bent, is het HTML-subtype. De eenvoudigste manier om zowel de tekenreeksinhoud van het MIME-gedeelte op te halen als in te stellen, is de eigenschap Text.

Genereer en verzend gratis een bericht met 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);
}                  

Genereer bericht met bijlagen met behulp van .NET API

MailKit API biedt functies voor het genereren van een bericht met bijlagen in .NET-toepassingen. Bijlagen zijn net als elke andere MimePart; het belangrijkste verschil is dat ze een content-disposition header bevatten met waarde van de bijlage in plaats van inline of helemaal geen Content-Disposition header. Om zowel een tekst/HTML als een tekst/platte versie van het bericht te verzenden, moet u voor elk deel een TekstPart maken en deze vervolgens toevoegen aan een multipart/alternatief.

Bericht maken met bijlagen 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;
 

Berichten versleutelen/ontsleutelen met PGP/MIME

De MailKit-bibliotheek biedt functies voor het coderen van e-mailberichten met PGP/MIME in .NET-toepassingen. De PGP/MIME gebruikt een MIME-gedeelte met een multipart/versleuteld mime-type om versleutelde gegevens in te kapselen. Als u een bericht wilt versleutelen, is het altijd een betere benadering om SecureMailboxAddress te gebruiken in plaats van een MailboxAddress voor elke ontvanger, waarmee gebruikers de unieke vingerafdruk van de PGP-sleutel van elke ontvanger kunnen specificeren.

Berichten versleutelen met 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);
  }
}

PGP/MIME-berichten decoderen


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