
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
- EML-Datei von Grund auf erstellen
- Ein Bild zum HTML-Inhalt hinzufügen
- EML-Datei aus einer HTML-Datei erstellen
- Tipps zur Verbesserung der Ansicht der HTML-Nachricht in Outlook
.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.