MailKit für C# (.NET): Komplettguide mit Praxisbeispielen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

MailKit für C# (.NET): Komplettguide mit Praxisbeispielen

1. Was ist MailKit und warum braucht man es?

MailKit ist eine leistungsstarke, plattformübergreifende Open-Source-Bibliothek für die E-Mail-Kommunikation im .NET-Ökosystem. Sie bietet ein vollständiges Toolkit zum Erstellen, Senden, Empfangen und Verarbeiten von E-Mail-Nachrichten. Im Gegensatz zur veralteten System.Net.Mail bietet MailKit eine moderne API, vollständige MIME-Unterstützung (Multipurpose Internet Mail Extensions), S/MIME- und OpenPGP-Funktionen sowie asynchrone Operationen – entscheidend für hochlastige Anwendungen.

Warum MailKit? Wenn Sie in C# entwickeln und E-Mails mit Anhängen versenden, eingehende Nachrichten parsen, mit verschiedenen Protokollen (SMTP, POP3, IMAP) arbeiten oder komplexe Formate (HTML, Anhänge, Signaturen) verarbeiten müssen, ist MailKit Ihr unverzichtbares Werkzeug. Es wird von tausenden Unternehmen in der Produktion eingesetzt, darunter auch Microsoft (in einigen internen Diensten), und unterstützt .NET Framework, .NET Core, .NET 5+ sowie Xamarin/MAUI.

Die Hauptvorteile von MailKit gegenüber Alternativen: vollständige Unterstützung der neuesten E-Mail-Standards (RFC 2045-2049, RFC 2822, RFC 5322), integrierte SSL/TLS-Unterstützung, Proxy-Kompatibilität, Streaming-Verarbeitung großer Anhänge und hohe Leistung dank System.IO.Pipelines und async/await.

2. Installation

MailKit wird über den NuGet-Paketmanager installiert. Führen Sie einen der folgenden Befehle in der Paket-Manager-Konsole (Package Manager Console) oder im .NET CLI-Terminal aus:

// Über .NET CLI
dotnet add package MailKit

// Über Package Manager Console
Install-Package MailKit

// Oder über den NuGet-Paketmanager in Visual Studio
// Suchen Sie nach "MailKit" und installieren Sie die neueste stabile Version

Nach der Installation wird automatisch die Abhängigkeit zu MimeKit (Basisbibliothek für MIME-Nachrichten) als transitive Abhängigkeit hinzugefügt.

3. Schnellstart – Minimalbeispiel

Hier ist ein minimales Beispiel zum Versenden einer einfachen Text-E-Mail über den Gmail-SMTP-Server. Hinweis: Für Gmail benötigen Sie ein App-Passwort (App Password) oder OAuth 2.0.

using MailKit.Net.Smtp;
using MimeKit;

// Nachricht erstellen
var message = new MimeMessage();
message.From.Add(new MailboxAddress("Absender", "sender@gmail.com"));
message.To.Add(new MailboxAddress("Empfänger", "recipient@example.com"));
message.Subject = "Test-E-Mail von MailKit";
message.Body = new TextPart("plain") { Text = "Hallo! Dies ist eine Testnachricht." };

// Über SMTP senden
using (var client = new SmtpClient())
{
    client.Connect("smtp.gmail.com", 587, SecureSocketOptions.StartTls);
    client.Authenticate("sender@gmail.com", "ihr-app-passwort");
    client.Send(message);
    client.Disconnect(true);
}

Console.WriteLine("E-Mail gesendet!");

4. Wichtige Methoden/Funktionen/Klassen

4.1. SmtpClient.Connect()

Signatur: Task ConnectAsync(string host, int port, SecureSocketOptions options, CancellationToken cancellationToken = default)

Funktion: Stellt eine Verbindung zum SMTP-Server her. Der Parameter SecureSocketOptions bestimmt die Verschlüsselungsart: None, Auto, SslOnConnect, StartTls.

using var client = new SmtpClient();
await client.ConnectAsync("smtp.mail.ru", 465, SecureSocketOptions.SslOnConnect);

4.2. SmtpClient.Authenticate()

Signatur: Task AuthenticateAsync(string userName, string password, CancellationToken cancellationToken = default)

Funktion: Authentifiziert den Client am SMTP-Server mit Benutzername und Passwort. Für moderne Server wird oft OAuth 2.0 empfohlen.

await client.AuthenticateAsync("benutzer@example.com", "ihr-passwort");

4.3. SmtpClient.Send()

Signatur: Task SendAsync(MimeMessage message, CancellationToken cancellationToken = default, ITransferProgress progress = default)

Funktion: Sendet die vorbereitete MimeMessage asynchron. Unterstützt Fortschrittsanzeige für große Anhänge.

await client.SendAsync(message);

4.4. ImapClient – E-Mails empfangen

Funktion: Ermöglicht das Abrufen und Verwalten von E-Mails über IMAP. Unterstützt Ordner, Nachrichtensuche und Synchronisation.

using var imap = new ImapClient();
await imap.ConnectAsync("imap.gmail.com", 993, SecureSocketOptions.SslOnConnect);
await imap.AuthenticateAsync("benutzer@gmail.com", "app-passwort");

var inbox = imap.Inbox;
await inbox.OpenAsync(FolderAccess.ReadOnly);
Console.WriteLine($"Sie haben {inbox.Count} Nachrichten im Posteingang.");

await imap.DisconnectAsync(true);

4.5. MimeMessage – Nachrichten erstellen

Funktion: Die zentrale Klasse zum Erstellen von E-Mail-Nachrichten. Unterstützt Absender, Empfänger, Betreff, Textkörper, Anhänge und Header.

var message = new MimeMessage();
message.From.Add(new MailboxAddress("Max Mustermann", "max@example.com"));
message.To.Add(new MailboxAddress("Anna Schmidt", "anna@example.com"));
message.Subject = "Angebot mit Anhang";

var body = new TextPart("plain") { Text = "Bitte finden Sie das Angebot im Anhang." };
var attachment = new MimePart("application/pdf")
{
    Content = new MimeContent(File.OpenRead("angebot.pdf")),
    ContentDisposition = new ContentDisposition(ContentDisposition.Attachment),
    ContentTransferEncoding = ContentEncoding.Base64,
    FileName = "angebot.pdf"
};

var multipart = new Multipart("mixed");
multipart.Add(body);
multipart.Add(attachment);
message.Body = multipart;

5. Fazit

MailKit ist die moderne und zukunftssichere Wahl für die E-Mail-Programmierung in .NET. Mit seiner asynchronen API, umfassenden Protokollunterstützung und hohen Leistung ersetzt es ältere Bibliotheken wie System.Net.Mail zuverlässig. Egal ob Sie einfache Transaktions-E-Mails, komplexe Newsletter mit Anhängen oder IMAP-basierte E-Mail-Clients entwickeln – MailKit bietet alle Werkzeuge, die Sie brauchen.

Empfehlungen