Skip to content
  • English Deutsch

benjamin-abt.com

Performance is a feature | Cloud - AI - Azure - .NET - Sustainability

  • Home
  • Blog
  • Portfolio
    • Overview
    • Workshops & Training
    • Publications
  • Contact
  • Home
  • Blog

Flexibler und einfacher E-Mail Versand mit Mimekit in .NET

Flexibler und einfacher E-Mail Versand mit Mimekit in .NET
October 8, 2020 3 min read BEN ABT
.NET MimeKit

Dieser Artikel stammt aus dem Jahr 2020. Versionen, Werkzeuge und Empfehlungen können sich seitdem geändert haben. Neuere Beiträge findest du unter .NET.

Die .NET MailMessage Klasse existiert bereits seit .NET 2.0 und hat entsprechend einen historischen Rucksack mit sich zu tragen. Die letzten Jahre haben - insbesondere aufgrund der Spam-Prävention - die Anforderungen an sichere E-Mails immer mehr erhöht, die die MailMessage-Klasse einfach nicht mehr abdecken kann; auch aus Kompatibilitätsgründen.

MimeKit

MimeKit ist eine sehr beliebte Open Source Bibliothek und Alternative, die den modernen Anforderungen gewachsen ist. Die primäre Aufgabe von MimeKit ist hierbei das Erzeugen der Mail - inklusive HTML-Content uns sogar SMIME- wie auch DKIM-Signaturen.

Der Aufbau ist hier relativ ähnlich zur bekannten MailMessage-Klasse:

C#
 1MimeMessage emailMessage = new();
 2
 3// Setzen des Absenders
 4emailMessage.From.Add(new MailboxAddress("SchwabenCode", "mail@domain.com"));
 5
 6// Setzen des Empfängers
 7emailMessage.To.Add(new MailboxAddress("mail@domain.com"));
 8
 9// Betreff
10emailMessage.Subject = "E-Mail Betreff";
11
12// Body
13emailMessage = new BodyBuilder { HtmlBody = htmlContent }.ToMessageBody()

Die BodyBuilder Klasse ist weniger für die Darstellung der Kraft vorhanden, sondern viel mehr für das Erstellen des Inhalts in Form von Plaintext oder HTML-Inhalten. Auch Bilder können dank dieser Builder-Klasse sehr einfach eingebunden werden, was in dieser Form bislang nur mit anderen externen Bibliotheken möglich war - oder durch viel selbst geschriebenen Code, um Client-konform Inhalte in E-Mails einzubetten.

C#
1var image = builder.LinkedResources.Add (@"image.jpg");
2image.ContentId = MimeUtils.GenerateMessageId ();
3
4// Bilder werden in HTML-Images über die ContentIds referenziert.
5builder.HtmlBody = string.Format (@"<p>Hallo, hier mein tolles Bild!</p><br />
6                                    <center><img src=""cid:{0}""></center>", image.ContentId);
7
8emailMessage.Body = builder.ToMessageBody();

MailKit - der Bruder von MimeKit

Das MimeKit selbst bringt keinen SMTP-Client mit; aus dem einfachen Grund, dass viele Schittstellen heutzutage nicht mehr direkt per SMTP E-Mails versenden, sondern mit Hilfe von weit verbreiteten Providern wie MailJet, SendGrid, Twilio und Co.

Wer dennoch - durchaus aufgrund von GDPR-Anforderungen oder auch den teilweise starren Preisstrukturen der Anbieter - weiterhin SMTP für das Versenden von E-Mails verwenden will braucht hier MailKit . MailKit arbeitet direkt mit der MimeKit-Bibliothek zusammen und verwendet auch die gemeinsamen Klassen.

Anders als der System.NET-Namespace wird nicht für jede E-Mail eine einzelne SMTP-Verbindung aufgebaut, sondern es wirst zunächst eine SMTP-Socket-Verbindung aufgebaut, die dann für viele E-Mails verwenden werden kann. Wir haben hier also einen klaren Effizient-Vorteil was die Wiederverwendbarkeit von SMTP-Verbindungen betrifft.

C#
 1// Erstellen des SMTP Clients und Aufbau der Verbindung
 2SmtpClient smtpClient = new();
 3{
 4    await smtpClient.ConnectAsync(smtpHost, smtpPort, useSsl: true, cancellationToken).ConfigureAwait(false);
 5    await smtpClient.AuthenticateAsync(smtpUserName, smtpPassword, cancellationToken).ConfigureAwait(false);
 6}
 7
 8// Versenden von ein oder meheren Nachrichten:
 9await smtpClient.SendAsync(emailMessage, cancellationToken).ConfigureAwait(false);
10
11// Trennen der SMTP Verbindung
12await smtpClient.DisconnectAsync(quit: true, cancellationToken).ConfigureAwait(false);

Das wars auch schon.

Mit sehr wenig Code ist es möglich moderne E-Mails mit Hilfe von SMTP zu verschicken; ohne externe Kosten und ganz GDPR-Konform.

Related articles

Versenden von E-Mails mit DKIM mit .NET und MailKit

Oct 16, 2020 - 4 min read

Versenden von E-Mails mit DKIM mit .NET und MailKit

Wer heute automatisierte E-Mails versenden will, die nicht unbedingt in jedem Spam-Filter hängen bleiben sollen, der kommt kaum an DKIM …

Production Rate Limiting in ASP.NET Core

Nov 3, 2026 - 16 min read

Production Rate Limiting in ASP.NET Core

Most ASP.NET Core rate-limiting examples stop after registering a fixed window. That is enough to demonstrate the middleware, but it is not …

The Big Decimal Bugfix with .NET 11

Nov 2, 2026 - 11 min read

The Big Decimal Bugfix with .NET 11

For more than two decades, (decimal)1.23 returned 1.23m. It looked correct, it passed every test and it was a polite lie.


BEN ABT

BEN ABT

Ben is Chief Engineering Officer and Principal Software Engineer at Medialesson.de, with a strong focus on .NET and Microsoft Azure. In his professional role, he designs and builds highly scalable platforms for hybrid and cloud-based scenarios. He also advises companies and C-levels on migrating to the sovereign cloud.

He runs myCSharp.de, the largest and most active German-speaking C# community forum, actively contributes to both his own and external open-source projects and regularly shares his knowledge through his blog, at community events, conferences and as a writer for technical magazines.

Let's Work Together

Looking for an experienced Platform Architect or Engineer for your next project? Whether it's cloud migration, platform modernization or building new solutions from scratch - I'm here to help you succeed.

New Platforms

Modernization

Training & Consulting

Contact Me
X Facebook LinkedIn WhatsApp
Back Next Blog Post

Open for work!

Contact Me
BEN ABT BEN ABT Software Engineer · Microsoft MVP Passionate about .NET, Azure, performance optimization and sustainable software engineering.

Medialesson GmbH Logo

Microsoft MVP Logo

Recent posts

View all
Automating Microsoft Entra External ID: CIAM Provisioning and Branding

Automating Microsoft Entra External ID: CIAM Provisioning …

Nov 10, 2026
Production Rate Limiting in ASP.NET Core

Production Rate Limiting in ASP.NET Core

Nov 3, 2026
The Big Decimal Bugfix with .NET 11

The Big Decimal Bugfix with .NET 11

Nov 2, 2026
Distroless, Chiseled or Alpine: Choosing a .NET Base Image

Distroless, Chiseled or Alpine: Choosing a .NET Base Image

Oct 27, 2026
Stop Using nginx as Your Default Static File Server in Docker

Stop Using nginx as Your Default Static File Server in …

Oct 24, 2026

Tags

.NET (195) Csharp (99) ASP.NET Core (49) Azure (42) DevOps (17) Docker (15) Microsoft (14) Security (12) EF Core (11) Microsoft MVP (11) AI (10) GitHub (10) GitHub Copilot (10) Architecture (9) ASP.NET (9) Synology (9) .NET 11 (8) Raspberry (8) Azure Functions (7) Cloudflare (7)
benjamin-abt.com

About BEN

Benjamin Abt is a Software Engineer, Platform Architect and Microsoft MVP specializing in .NET, Azure, cloud architecture, performance optimization and sustainable software development.

Connect

  • Follow me on GitHub
  • Follow me on LinkedIn
  • Follow me on Mastodon
  • Microsoft MVP profile
  • Follow SchwabenCode on GitHub
  • Follow me on X

Quick Links

  • Portfolio
  • Blog
  • Workshops & Training
  • Publications
  • Get in Touch
  • Sitemap
Open for Work

© Copyright Benjamin Abt & SchwabenCode | 2011 - 2026

Content licensed under CC BY 4.0 unless otherwise noted.

  • Impressum
  • Privacy
  • Contact