1. Produkte
  2.   Email
  3.   .NET
  4.   MailKit
 
  

Open-Source-.NET-Bibliothek für IMAP, POP3 und SMTP

Kostenlose C# .NET-Bibliothek zum Generieren von Nachrichten mit Anhängen, Verschlüsseln/Entschlüsseln von Nachrichten mit PGP/MIME. 

MailKit ist eine Open-Source-.NET-Bibliothek für IMAP, POP3 und SMTP. Es ist eine plattformübergreifende Mail-Client-Bibliothek, die auf MimeKit aufbaut. Das Projekt zielt darauf ab, robuste, voll funktionsfähige und RFC-konforme SMTP-, POP3- und IMAP-Client-Implementierungen bereitzustellen.

Die API unterstützt mehrere wichtige Funktionen in Bezug auf SASL-Authentifizierung, Proxy-Unterstützung, SMTP-Client, POP3-Client, IMAP4-Client, clientseitige Sortierung und Threading von Nachrichten.

Previous Next

Erste Schritte mit MailKit

Der einfachste Weg, MailKit zu installieren, ist über NuGet. Um es über die Paket-Manager-Konsole von Visual Studio zu verwenden, geben Sie bitte den folgenden Befehl ein.

Installieren Sie Mailkit über NuGet

Install-Package MailKit  

Installieren Sie Mailkit über GitHub 

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

Erstellen Sie neue Nachrichten über .NET

Die Open-Source-API MailKit-Bibliothek ermöglicht es Softwareentwicklern, MIME-Nachrichten mit ein paar einfachen Befehlen zu erstellen. Ein TextPart ist ein Blattknoten-MIME-Teil mit einem Textmedientyp. Das erste Argument des TextPart-Konstruktors gibt den media-subtype an, in diesem Fall plain. Ein weiterer Medien-Untertyp, mit dem Sie wahrscheinlich vertraut sind, ist der HTML-Untertyp. Der einfachste Weg, sowohl den Zeichenfolgeninhalt des MIME-Teils abzurufen als auch festzulegen, ist die Text-Eigenschaft.

Die Open-Source-API MailKit-Bibliothek ermöglicht es Softwareentwicklern, MIME-Nachrichten mit wenigen einfachen Befehlen zu erstellen. Ein TextPart ist ein Blattknoten-MIME-Teil mit einem Textmedientyp. Das erste Argument des TextPart-Konstruktors gibt den media-subtype an, in diesem Fall plain. Ein weiterer Medien-Untertyp, mit dem Sie wahrscheinlich vertraut sind, ist der HTML-Untertyp. Der einfachste Weg zum Abrufen und Festlegen des Zeichenfolgeninhalts des MIME-Teils ist die Text-Eigenschaft.

Generieren und senden Sie Nachrichten kostenlos mit 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);
}                  

Generieren Sie eine Nachricht mit Anhängen mithilfe der .NET-API

Die MailKit-API bietet Funktionen zum Generieren einer Nachricht mit Anhängen in .NET-Anwendungen. Anhänge sind wie alle anderen MimeParts; Der Hauptunterschied besteht darin, dass sie einen Content-Disposition-Header enthalten, der den Wert des Anhangs enthält, anstatt einen Inline- oder gar keinen Content-Disposition-Header. Um sowohl eine Text-/HTML- als auch eine Text-/Klartextversion der Nachricht zu versenden, müssen Sie für jeden Teil einen TextPart erstellen und ihn dann zu einem Multipart/einer Alternative hinzufügen.

Nachricht mit Anhängen über C# erstellen


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;
 

Verschlüsseln/Entschlüsseln von Nachrichten mit PGP/MIME

Die MailKit-Bibliothek bietet Funktionen zum Verschlüsseln von E-Mail-Nachrichten mit PGP/MIME in .NET-Anwendungen. PGP/MIME verwendet einen MIME-Teil mit einem mehrteiligen/verschlüsselten MIME-Typ, um verschlüsselte Daten einzukapseln. Wenn Sie eine Nachricht verschlüsseln möchten, ist es immer ein besserer Ansatz, SecureMailboxAddress anstelle einer MailboxAddress für jeden Empfänger zu verwenden, wodurch Benutzer den eindeutigen Fingerabdruck des PGP-Schlüssels jedes Empfängers angeben können.

Nachrichten verschlüsseln mit PGP/MIME über 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-Nachrichten entschlüsseln


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