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", "[email protected]"));
 5
 6// Setzen des Empfängers
 7emailMessage.To.Add(new MailboxAddress("[email protected]"));
 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 …

Containerizing .NET in 2026 Without a Dockerfile

Oct 20, 2026 - 11 min read

Containerizing .NET in 2026 Without a Dockerfile

Most .NET Dockerfiles repeat the same five steps: restore, publish, select the matching Microsoft runtime image, copy the output and start …

Problem Details in ASP.NET Core and .NET 11

Oct 5, 2026 - 12 min read

Problem Details in ASP.NET Core and .NET 11

builder.Services.AddProblemDetails() registers infrastructure. It does not create an error contract. An ASP.NET Core request can fail during …


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
Stop Using nginx as Your Default Static File Server in Docker

Stop Using nginx as Your Default Static File Server in …

Oct 24, 2026
Containerizing .NET in 2026 Without a Dockerfile

Containerizing .NET in 2026 Without a Dockerfile

Oct 20, 2026
Problem Details in ASP.NET Core and .NET 11

Problem Details in ASP.NET Core and .NET 11

Oct 5, 2026
Resilience in .NET with Microsoft.Extensions.Resilience

Resilience in .NET with Microsoft.Extensions.Resilience

Sep 21, 2026
What Matters in ASP.NET Core 11

What Matters in ASP.NET Core 11

Sep 14, 2026

Tags

.NET (192) Csharp (96) ASP.NET Core (48) Azure (41) DevOps (17) Docker (14) Microsoft (14) EF Core (11) Microsoft MVP (11) AI (10) GitHub (10) GitHub Copilot (10) ASP.NET (9) Security (9) Synology (9) Architecture (8) Raspberry (8) Azure Functions (7) Cloudflare (7) Bicep (6)
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