Convert email to HTML in C# .NET

HTML ist ein weit verbreitetes und leicht zugängliches Format, das von einer Vielzahl von Plattformen und Webbrowsern, einschließlich Desktop-Computern und mobilen Geräten, angezeigt werden kann. Im Gegensatz dazu erfordern EML- und MSG-Dateien möglicherweise spezielle Software oder E-Mail-Clients, um sie anzuzeigen, was den Zugriff und die Anzeige im Laufe der Zeit erschweren kann. Daher macht das Konvertieren von MSG- oder EML-Dateien in HTML sie einfacher anzusehen, insbesondere für Empfänger, die möglicherweise keine kompatiblen E-Mail-Clients oder Software haben.

Darüber hinaus sind HTML-Dateien leichter zu archivieren und bleiben in einem durchsuchbaren, indizierten Format.

Dieser Artikel präsentiert einen Algorithmus zum schnellen und einfachen Konvertieren von MSG- oder EML-Dateien in HTML-Format mit C#, unabhängig vom zugrunde liegenden Zweck. Unsere zuverlässige Methode garantiert, dass der Inhalt der E-Mail, einschließlich eingebetteter Bilder, vollständig erhalten bleibt, ohne dass Daten verloren gehen. Dies stellt sicher, dass die Integrität der E-Mail während des gesamten Konvertierungsprozesses gewahrt bleibt.

Der Artikel behandelt die folgenden Themen:

C# API zum Konvertieren von EML/MSG-Dateien in HTML

Für die Konvertierung von EML/MSG-Dateien in HTML verwenden wir Aspose.Email für .NET. Es handelt sich um eine API zur Verarbeitung von E-Mails, mit der Sie E-Mails bearbeiten und mit Dateiformaten gängiger E-Mail-Clients wie Thunderbird, Outlook usw. arbeiten können. Sie können die DLL der API herunterladen oder sie über NuGet mit dem folgenden Befehl installieren:

PM> Install-Package Aspose.Email

Konvertieren von EML/MSG-Dateien in HTML und Speichern von Bildern separat

Eine typische MSG-Datei hat die folgende Ansicht:

MSG-Dateiansicht

Mit unserer API können Sie ein beliebiges Verzeichnis auf Ihrem Gerät festlegen und die Ziel-HTML-Datei mit Bildern in einem separaten Ordner speichern:

HTML-Dateiansicht

Verwenden Sie das folgende Codebeispiel, um eine E-Mail-Nachricht im MSG- oder EML-Format in eine HTML-Datei mit Bildern zu konvertieren, die in ein Zielverzeichnis gespeichert werden. Der Code führt die folgenden Schritte aus:

  1. Zuerst werden die Quell- und Zielpfade für die Quell-MSG/EML-Datei und die HTML-Datei sowie das Zielverzeichnis für die Ressourcen angegeben.
  2. Die MSG- oder EML-Datei wird mit der MailMessage.Load-Methode geladen.
  3. Ein HtmlSaveOptions-Objekt wird erstellt und die ResourceRenderingMode-Eigenschaft auf SaveToFile gesetzt.
  4. Ein Delegat für das SaveResourceHandler-Ereignis von HtmlSaveOptions wird definiert.
  5. Ein Zielverzeichnis für die Ressourcen innerhalb des Delegaten wird erstellt, falls es noch nicht existiert.
  6. Jede Ressource wird mit einem Dateinamen innerhalb des Delegaten basierend auf dem Inhaltstyp der Ressource in einer Datei gespeichert.
  7. Die Save-Methode der MailMessage-Instanz wird aufgerufen, wobei der Ziel-HTML-Dateiname und die HtmlSaveOptions-Instanz übergeben werden, um die E-Mail im HTML-Format zu speichern.
// MSG or EML filename
var msgFileName = Path.Combine(sourcePath, "A Day in the Park.msg");
// target HTML
var htmlFileName = Path.Combine(targetPath, "A Day in the Park.html");
// target directory to save images
var resourceDir = Path.Combine(targetPath, "A Day in the Park");
// Load MSG or EML
var msg = MailMessage.Load(msgFileName);
// Create HTML save options
var htmlSaveOptions = new HtmlSaveOptions
{
ResourceRenderingMode = ResourceRenderingMode.SaveToFile
};
htmlSaveOptions.SaveResourceHandler +=
(AttachmentBase attachment, out string resourceFileName) =>
{
if (!Directory.Exists(resourceDir))
{
Directory.CreateDirectory(resourceDir);
}
resourceFileName = Path.Combine(resourceDir, attachment.ContentType.Name);
attachment.Save(resourceFileName);
};
msg.Save(htmlFileName, htmlSaveOptions);

Konvertieren von EML/MSG-Dateien in HTML und Speichern von Bildern im HTML

Manchmal möchten Sie EML/MSG-Dateien in HTML konvertieren und die eingebetteten Bilder im HTML beibehalten.

Bild im HTML in einem Texteditor

Das folgende Code-Snippet zeigt, wie man eine MSG- oder EML-Datei in HTML-Format in C# konvertiert und die Bilder im HTML speichert. Der Code führt die folgenden Schritte aus:

  1. Definiert die Quell- und Zielpfade für die E-Mail-Datei und die HTML-Ausgabe.
  2. Lädt die MSG- oder EML-Datei mit der MailMessage.Load-Methode.
  3. Erstellt eine neue Instanz der HtmlSaveOptions-Klasse, mit der Sie konfigurieren können, wie die E-Mail als HTML gespeichert wird.
  4. Konfiguriert die HtmlSaveOptions-Instanz, um die Ressourcen, einschließlich Bilder, direkt in das HTML einzubetten.
  5. Ruft die Save-Methode der MailMessage-Instanz auf, übergibt den Ziel-HTML-Dateinamen und die HtmlSaveOptions-Instanz, um die E-Mail im HTML-Format zu speichern.
// MSG or EML filename
var msgFileName = Path.Combine(sourcePath, "A Day in the Park.msg");
// target HTML
var htmlFileName = Path.Combine(targetPath, "A Day in the Park.html");
// Load MSG or EML
var msg = MailMessage.Load(msgFileName);
// Create HTML save options
var htmlSaveOptions = new HtmlSaveOptions
{
ResourceRenderingMode = ResourceRenderingMode.EmbedIntoHtml
};
msg.Save(htmlFileName, htmlSaveOptions);

Speichern von HTML mit einem Header

Als optionale Variante können Sie ein HTML mit einem Header speichern. Das folgende Code-Snippet demonstriert, wie man ein HTML mit einem Header in C#:

// Create HTML save options
var htmlSaveOptions = new HtmlSaveOptions
{
ResourceRenderingMode = ResourceRenderingMode.EmbedIntoHtml,
HtmlFormatOptions = HtmlFormatOptions.WriteHeader
};

Als Ergebnis wird ein Textheader zur Ziel-HTML hinzugefügt:

Textheader

Fazit

Zusammenfassend haben Sie aus diesem Artikel gerade die Vorteile des HTML-Formats für die Archivierung und Verwaltung Ihrer Dateien sowie die Durchführung der Konvertierung von EML oder MSG in C# unter Verwendung der Aspose.Email für .NET-Bibliothek gelernt. Sie konnten sehen, wie schnell und einfach der Konvertierungsprozess mit nur wenigen Codezeilen ist. Falls Sie Fragen haben, können Sie sich gerne an unser kostenloses Support-Forum wenden. Sie können auch mehr über Aspose.Email für .NET, seine Funktionen und Möglichkeiten aus unserer Dokumentation erfahren.

Siehe auch