Create MIME messages using C#

Beim Versenden einer E-Mail müssen Sie möglicherweise multimediale Inhalte wie Bilder, Audio und Video senden. Hier kommen MIME (Multipurpose Internet Mail Extensions)-Nachrichten ins Spiel. In diesem Artikel werden wir untersuchen, wie man EML Nachrichten programmgesteuert in C# erstellt. Am Ende des Artikels werden Sie verstehen, wie man MIME-Nachrichten erstellt, Bilder in den HTML-Inhalt der E-Mail einfügt und E-Mails im EML-Format speichert.

.NET API zum Erstellen von MIME-Nachrichten

Bevor Sie Ihre erste MIME-Nachricht erstellen, ist der erste Schritt, Aspose.Email für .NET in Ihr Projekt zu installieren. Es ist eine leistungsstarke Bibliothek für C#-Entwickler, die eine umfassende Sammlung von Tools zum Arbeiten mit E-Mail-Nachrichten bietet, einschließlich der Möglichkeit, MIME-Nachrichten programmgesteuert zu erstellen. Die Bibliothek hilft Entwicklern, verschiedene Aspekte von MIME-Nachrichten einfach zu manipulieren, wie Anhänge, Inhalte, Header, Kodierung und mehr. Sie können die Bibliothek entweder über NuGet installieren oder ihre DLL herunterladen.

PM> Install-Package Aspose.Email

EML-Datei von Grund auf erstellen

Da Ihre API installiert wurde, ist es Zeit, Ihre erste eml von Grund auf zu erstellen. Eine der einfachsten Möglichkeiten, dies zu tun, besteht darin, die MailMessage Klasse von Aspose.Email zu verwenden. Die MailMessage-Klasse ermöglicht es Ihnen, ein E-Mail-Nachrichtenobjekt mit verschiedenen Eigenschaften und Methoden zu erstellen, mit denen Sie den Absender, die Empfänger, den Betreff, den Inhalt, die Anhänge, die Header und andere Details Ihrer E-Mail festlegen können.

Die folgenden Schritte und ein Code-Snippet helfen Ihnen, eine EML von Grund auf zu erstellen:

  • Erstellen Sie ein neues MailMessage Objekt mit dem Standardkonstruktor.
  • Setzen Sie die Eigenschaften des MailMessage-Objekts gemäß Ihren Bedürfnissen.
  • Speichern Sie das MailMessage-Objekt in einer EML-Datei unter Verwendung der Save Methode.
// Create a new MailMessage object
var eml = new MailMessage()
{
// Set the sender address
From = "sender@sender.com",
// Add a recipient address
To = "receiver@receiver.com",
// Set the subject
Subject = "New message",
// Set the HTML body
HtmlBody = @"<!DOCTYPE html>
<html>
<head>
<style>
h3{font-family:Verdana, sans-serif;color:#000000;background-color:#ffffff;}
p {font-family:Verdana, sans-serif;font-size:14px;font-style:normal;
font-weight:normal;color:#000000;background-color:#ffffff;}
</style>
</head>
<body>
<h3>New message</h3>
<p>This is a new message created by Aspose.Email.</p>
</body>
</html>"
};
// Save the MailMessage object to an EML file
eml.Save("message.eml", SaveOptions.DefaultEml);

Die Save Methode der MailMessage Klasse benötigt zwei Parameter: den Dateipfad und die Speicheroptionen. Die Speicheroptionen geben das Format der Ausgabedatei an.

Ein Bild zum HTML-Inhalt hinzufügen

Um diese Funktion auszuführen, müssen Sie das Bild im HTML-Body einbetten. Sie können das “img”-Tag verwenden, um dies zu tun.

Das folgende Code-Snippet zeigt, wie man ein Bild zum HTML-Body einer Nachricht hinzufügt.

  • Der HTML-Body enthält ein Bild-Tag mit einem cid:image1 als Quellattribut.
  • Die AlternateView Klasse wird verwendet, um eine alternative Ansicht des Nachrichteninhalts zu erhalten, die das eingebettete Bild enthält.
  • Die LinkedResource Klasse wird verwendet, um das eingebettete Bild darzustellen, und seine Inhalts-ID wird auf image1 gesetzt.
  • Schließlich wird die alternative Ansicht der Sammlung der alternativen Ansichten der Nachricht hinzugefügt.
// Create a new instance of MailMessage class
var eml = new MailMessage
{
// Set sender and recipient
From = new MailAddress("sender@domain.com"),
To = new MailAddress("recipient@domain.com"),
// Set subject and body
Subject = "New message with image",
HtmlBody = @"<!DOCTYPE html>
<html>
<head>
<style>
h3{font-family:Verdana, sans-serif;color:#000000;background-color:#ffffff;}
p {font-family:Verdana, sans-serif;font-size:14px;font-style:normal;
font-weight:normal;color:#000000;background-color:#ffffff;}
</style>
</head>
<body>
<h3>New message</h3>
<p>This is a new message created by Aspose.Email.</p>
<img src='cid:myImage' />
</body>
</html>"
};
var alternateView = eml.AlternateViews.GetView(MediaTypeNames.Text.Html);
var imageResource = new LinkedResource(path + "image.png", MediaTypeNames.Image.Png)
{
ContentId = "image1"
};
alternateView.LinkedResources.Add(imageResource);
eml.Save("message_with_image.eml", SaveOptions.DefaultEml);

EML-Datei aus einer HTML-Datei erstellen

Eine Möglichkeit, dies zu tun, besteht darin, mit einer HTML-Datei zu beginnen und sie in EML umzuwandeln. Dies kann nützlich sein, wenn Sie HTML haben, das Sie als E-Mail-Nachricht senden möchten. Zu diesem Zweck müssen wir zuerst den HTML-Inhalt haben. Nennen wir diese Datei content.html. Hier ist ein Beispiel dafür:

<!DOCTYPE html>
<html>
<head>
	<title>Meine E-Mail</title>
</head>
<body>
	<h1>Hallo,</h1>
	<img src="logo.png" alt="Logo">
	<p>Das ist meine erste E-Mail, die aus HTML erstellt wurde.</p>
</body>
</html>

Außerdem müssen Sie im Voraus alle Bilder vorbereiten, die HTML enthalten, und den korrekten Pfad zu ihnen in der HTML-Datei angeben.

Jetzt können wir ganz einfach eine MailMessage erstellen, indem wir den HTML-Body aus content.html setzen.

  • Zuerst erstellen Sie ein neues HtmlLoadOptions Objekt.
  • Setzen Sie einen String, der den Pfad zu den Bildern in PathToResources enthält.
  • Setzen Sie die ShouldAddPlainTextView Eigenschaft auf true, wenn EML eine AlternateView mit reinem Text enthalten soll.
  • Erstellen Sie ein MailMessage Objekt, indem Sie die HTML-Datei laden und das HtmlLoadOptions Objekt als Parameter übergeben.
  • Setzen Sie zusätzliche Nachrichten Eigenschaften.
  • Speichern Sie schließlich das MailMessage-Objekt in einer EML-Datei mit der Save Methode.
var htmlloadOptions = new HtmlLoadOptions
{
PathToResources = path,
ShouldAddPlainTextView = true
};
var eml = MailMessage.Load(path + @"content.html", htmlloadOptions);
// Set sender and recipient
eml.From = new MailAddress("sender@domain.com");
eml.To = new MailAddress("recipient@domain.com");
// Set subject
eml.Subject = "New message from HTML";
// Save the message in EML format
eml.Save("message_from_html.eml", SaveOptions.DefaultEml);

Tipps zur Verbesserung der Ansicht der HTML-Nachricht in Outlook

Um Ihre HTML-Nachricht in Outlook anzuzeigen, müssen Sie sicherstellen, dass ihr Code mit der Rendering-Engine von Outlook kompatibel ist, die sich von den meisten Webbrowsern unterscheidet. Einige der häufigen Probleme, die Ihre HTML-E-Mail in Outlook beeinträchtigen können, sind:

  • Outlook unterstützt einige seiner Tags und CSS-Eigenschaften nicht, wie Hintergrundbilder, Floats, Margen, Abstände usw. Möglicherweise müssen Sie Inline-Styles, Tabellen oder bedingte Kommentare verwenden, um das gewünschte Layout und die gewünschte Formatierung zu erreichen.
  • Outlook kann zusätzliche Abstände oder Linien zwischen Elementen hinzufügen oder einige Elemente ganz entfernen. Möglicherweise müssen Sie nicht trennende Leerzeichen, Leerzeichen mit null Breite oder leere Tabellenzellen verwenden, um dies zu verhindern.
  • Outlook kann die Kodierung oder den Zeichensatz Ihrer HTML-Datei ändern, was dazu führen kann, dass einige Zeichen falsch angezeigt werden. Möglicherweise müssen Sie die Kodierung und den Zeichensatz in einem Meta-Tag angeben.

Fazit

In diesem Blogbeitrag haben Sie gelernt, wie man MIME-Nachrichten programmgesteuert in C# mit Aspose.Email erstellt. Das schrittweise Tutorial und die Codebeispiele zeigten, wie man eine EML-Datei von Grund auf und aus einer HTML-Datei erstellt, ein Bild in den HTML-Inhalt der E-Mail-Nachricht einfügt und alle oben genannten Punkte mit nützlichen Tipps zur Verbesserung der Ansicht Ihrer HTML-Nachricht in Outlook unterstützt.

  • Sie können mehr über Aspose.Email für .NET erfahren und es kostenlos testen.
  • Sie können auch die weiteren Funktionen und Möglichkeiten von Aspose.Email in der Dokumentation überprüfen.
  • Ihre Fragen sind auf unserem Forum willkommen.

Siehe auch