Laden, Speichern und Konvertieren von E‑Mails
Erkennen von E-Mail-Dateiformaten
Aspose.Email API bietet die Möglichkeit, das Dateiformat der bereitgestellten Nachrichtendatei zu erkennen. Die DetectFileFormat Methode von FileFormatUtil Klasse kann dazu verwendet werden. Die folgenden Klassen und Methoden können verwendet werden, um das geladene Dateiformat zu erkennen:
- Aufzählung FileFormatType
- Klasse FileFormatInfo
- Klasse FileFormatUtil
- Methode detect_file_format(stream)
- Methode detect_file_format(file_path)
Das folgende Code‑Snippet zeigt, wie Sie Dateiformate erkennen:
from aspose.email.tools import FileFormatUtil
# Detect file format and get the detected load format
info = FileFormatUtil.detect_file_format(data_dir + "message.msg")
print("The message format is: " + str(info.file_format_type))
Laden einer Nachricht mit Ladeoptionen
Das folgende Code‑Snippet zeigt, wie Sie eine Nachricht mit Ladeoptionen laden.
from aspose.email import MailMessage, EmlLoadOptions, HtmlLoadOptions, MhtmlLoadOptions, MsgLoadOptions
# Load Eml, html, mhtml, msg, and dat files
mail_message = MailMessage.load(data_dir + "message.eml", EmlLoadOptions())
MailMessage.load(data_dir + "description.html", HtmlLoadOptions())
MailMessage.load(data_dir + "message.mhtml", MhtmlLoadOptions())
MailMessage.load(data_dir + "message.msg", MsgLoadOptions())
# Loading with custom options
eml_load_options = EmlLoadOptions()
eml_load_options.preferred_text_encoding = "utf-8"
eml_load_options.preserve_tnef_attachments = True
MailMessage.load(data_dir + "description.html", eml_load_options)
html_load_options = HtmlLoadOptions()
html_load_options.preferred_text_encoding = "utf-8"
html_load_options.should_add_plain_text_view = True
html_load_options.path_to_resources = data_dir
MailMessage.load(data_dir + "description.html", html_load_options)
Behalten des eingebetteten Nachrichtenformats beim Laden
from aspose.email import MailMessage, EmlLoadOptions, HtmlLoadOptions, MhtmlLoadOptions, MsgLoadOptions
from aspose.email.tools import FileFormatUtil
eml_load_options = EmlLoadOptions()
eml_load_options.preserve_embedded_message_format = True
mail = MailMessage.load(data_dir + "message.eml", eml_load_options)
file_format = FileFormatUtil.detect_file_format(mail.attachments[0].content_stream).file_format_type
print("Embedded message file format: " + str(file_format))
Speichern und Konvertieren von E‑Mails
Aspose.Email erleichtert die Konvertierung beliebiger Nachrichtentypen in ein anderes Format. Um diese Funktion zu demonstrieren, lädt der Code in diesem Artikel drei Nachrichtentypen von der Festplatte und speichert sie in anderen Formaten zurück. Die Basisklasse SaveOptions und die Klassen EmlSaveOptions, MsgSaveOptions, MhtSaveOptions, HtmlSaveOptions kann für zusätzliche Einstellungen beim Speichern von Nachrichten in andere Formate verwendet werden. Der Artikel zeigt, wie diese Klassen genutzt werden, um eine Beispiel‑E‑Mail zu speichern als:
- EML‑Format.
- Outlook‑MSG.
- MHTML‑Format.
- HTML‑Format.
Speichern als EML
Das folgende Code‑Snippet zeigt, wie Sie eine EML‑Nachricht laden und auf dem Datenträger im selben Format speichern.
from aspose.email import MailMessage, SaveOptions
# Initialize and Load an existing EML file by specifying the MessageFormat
mail_message = MailMessage.load(data_dir + "message.eml")
mail_message.save(data_dir + "LoadAndSaveFileAsEML_out.eml", SaveOptions.default_eml)
Behalten von Boundaries in EML‑Dateien
Das folgende Code‑Snippet zeigt, wie Sie eine EML‑Datei laden und im selben Format speichern, wobei die ursprünglichen Boundaries erhalten bleiben.
from aspose.email import MailMessage, EmlSaveOptions, MailMessageSaveType
mail_message = MailMessage.load(data_dir + "message.eml")
# Save as eml with preserved original boundaries
eml_save_options = EmlSaveOptions(MailMessageSaveType.eml_format)
mail_message.save(data_dir + "PreserveOriginalBoundaries_out.eml", eml_save_options)
Anpassen von MIME‑Boundary‑Strings
Aspose.Email für .NET ermöglicht die Konfiguration der Boundary‑Vorlage, die in MIME‑Nachrichten verwendet wird. Dies wird über die boundaries_template Eigenschaft des EmlSaveOptions Klasse.
Durch das Festlegen einer benutzerdefinierten Vorlage können Sie bestimmen, wie MIME‑Boundaries erzeugt werden. Der Platzhalter {#} in der Vorlage wird durch eine fortlaufende Boundary‑Nummer ersetzt, wodurch dynamische und lesbare Boundary‑Strings entstehen.
Wenn boundaries_template ist nicht gesetzt (Standard ist None), verwendet die Bibliothek ihr internes Boundary-Format.
Das folgende Codebeispiel zeigt, wie Sie die MIME‑Boundary‑Strings beim Speichern einer E‑Mail‑Nachricht im .eml‑Format anpassen können:
import aspose.email as ae
# Create a sample MailMessage
message = ae.MailMessage()
message.subject = "Custom MIME Boundary"
message.body = "This message uses a custom MIME boundary template."
message.to.append(ae.MailAddress("recipient@example.com"))
# Configure save options with a custom boundary template
save_options = ae.EmlSaveOptions(ae.MailMessageSaveType.EML_FORMAT)
save_options.boundaries_template = "boundary--{#}"
# Save the message to .eml with custom boundaries
message.save("Custom_Boundary_Message.eml", save_options)
Hier ist ein Beispiel der Nachrichtenstruktur mit benutzerdefinierten Boundaries, gespeichert mit dem obigen Code:
From: sender@example.com
To: recipient@example.com
Subject: Custom_Boundary_Message
Date: Fri, 27 Dec 2024 12:00:00 +0000
Content-Type: multipart/mixed;
boundary="boundary--1"
This is a multi-part message in MIME format.
--boundary--1
Content-Type: multipart/alternative; boundary="boundary--2"
--boundary--2
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset="us-ascii"
This is the plain text content of the email.
--boundary--2
Content-Type: text/html; charset="windows-1251"
Content-Transfer-Encoding: quoted-printable
<html>
<body>
<p>This is the <b>HTML</b> content of the email.</p>
</body>
</html>
--boundary--2--
--boundary--1
Content-Type: application/octet-stream; name="report-2023-08.xlsx"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="report-2023-08.xlsx"
UEsDBBQABgAIAAAAIQBi7...
--boundary--1--
Behalten von TNEF‑Anhängen in EML‑Dateien
Das folgende Code‑Snippet zeigt, wie Sie eine EML‑Datei speichern und dabei TNEF‑Anhänge erhalten.
from aspose.email import MailMessage, EmlSaveOptions, MailMessageSaveType, FileCompatibilityMode
mail_message = MailMessage.load(data_dir + "message.eml")
# Save as eml with preserved attachment
eml_save_options = EmlSaveOptions(MailMessageSaveType.eml_format)
eml_save_options.file_compatibility_mode = FileCompatibilityMode.PRESERVE_TNEF_ATTACHMENTS
mail_message.save(data_dir + "PreserveTNEFAttachment_out.eml", eml_save_options)
Speichern als MSG
Das folgende Code‑Snippet zeigt, wie Sie eine EML‑Nachricht laden und mithilfe der passenden Option aus SaveOptions.
from aspose.email import MailMessage, SaveOptions, MailMessageSaveType, FileCompatibilityMode
# Initialize and Load an existing EML file by specifying the MessageFormat
eml = MailMessage.load(data_dir + "message.eml")
# Save the Email message to disk in ASCII format and Unicode format
eml.save(data_dir + "AnEmail_out.msg", SaveOptions.default_msg_unicode)
Behalten von Datumsangaben in MSG‑Dateien
Die MsgSaveOptions Klasse ermöglicht es, die Quellnachricht als Outlook‑Message‑Datei (MSG) zu speichern und dabei das Datum zu erhalten. Das folgende Code‑Snippet zeigt, wie Sie eine EML‑Datei als MSG speichern und das Datum bewahren.
from aspose.email import MailMessage, MsgSaveOptions, MailMessageSaveType, FileCompatibilityMode
# Initialize and Load an existing EML file by specifying the MessageFormat
eml = MailMessage.load(data_dir + "message.eml")
# Save as msg with preserved dates
msg_save_options = MsgSaveOptions(MailMessageSaveType.outlook_message_format_unicode)
msg_save_options.preserve_original_dates = True
eml.save(data_dir + "outTest_out.msg", msg_save_options)
Speichern als MHTML
Verschiedene MHTML‑Optionen können verwendet werden, um die gewünschten Ergebnisse zu erzielen. Das folgende Code‑Snippet zeigt, wie man eine EML‑Nachricht lädt in MailMessage und konvertieren Sie es nach MHTML.
from aspose.email import MailMessage, SaveOptions, MailMessageSaveType, FileCompatibilityMode
# Initialize and Load an existing EML file by specifying the MessageFormat
eml = MailMessage.load(data_dir + "message.eml")
eml.save(data_dir + "AnEmail_out.mhtml", SaveOptions.default_mhtml)
Benutzerdefinierte MHTML‑Konvertierungseinstellungen
Die MhtSaveOptions Klasse stellt zusätzliche Optionen zum Speichern von E‑Mail‑Nachrichten im MHTML‑Format bereit. Der Aufzählungstyp MhtFormatOptions macht es möglich, zusätzliche E‑Mail‑Informationen in das AusgabemHTML zu schreiben. Die folgenden zusätzlichen Felder können geschrieben werden:
- NONE – Keine spezifischen Einstellungen sind angegeben.
- WRITE_HEADER – Gibt an, dass Kopfzeileninformationen geschrieben werden sollen.
- WRITE_OUTLINE_ATTACHMENTS – Gibt an, dass Outline‑Anhänge geschrieben werden sollen.
- WRITE_COMPLETE_EMAIL_ADDRESS – Gibt an, dass die vollständige E‑Mail‑Adresse in allen E‑Mail‑Kopfzeilen geschrieben werden soll.
- NO_ENCODE_CHARACTERS – Gibt an, dass keine Transferkodierung für Zeichen verwendet werden soll.
- HIDE_EXTRA_PRINT_HEADER – Gibt an, dass die Seitenkopfzeile nicht sichtbar sein wird.
- WRITE_COMPLETE_TO_EMAIL_ADDRESS – Gibt an, dass die vollständige E‑Mail‑Adresse in der ‘To’-Kopfzeile geschrieben werden soll.
- WRITE_COMPLETE_FROM_EMAIL_ADDRESS – Gibt an, dass die vollständige E‑Mail‑Adresse in der ‘From’-Kopfzeile geschrieben werden soll.
- WRITE_COMPLETE_CC_EMAIL_ADDRESS – Gibt an, dass die vollständige E‑Mail‑Adresse in der ‘Cc’-Kopfzeile geschrieben werden soll.
- WRITE_COMPLETE_BCC_EMAIL_ADDRESS – Gibt an, dass die vollständige E‑Mail‑Adresse in der ‘Bcc’-Kopfzeile geschrieben werden soll.
- RENDER_CALENDAR_EVENT – Gibt an, dass Text aus dem Kalenderereignis in das Ausgabemhtml geschrieben wird.
- SKIP_BYTE_ORDER_MARK_IN_BODY – Gibt an, dass Byte‑Order‑Mark (BOM)-Bytes nicht in den Body geschrieben werden.
- RENDER_V_CARD_INFO – Gibt an, dass Text aus VCard‑AlternativeView in das Ausgabemhtml geschrieben wird.
- DISPLAY_AS_OUTLOOK – Gibt an, dass die From‑Kopfzeile wie in Outlook angezeigt wird.
- RENDER_TASK_FIELDS – Gibt an, dass die spezifischen Aufgabenfelder in das Ausgabemhtml geschrieben werden sollen.
Das folgende Code‑Snippet zeigt, wie Sie eine EML‑Datei mit optionalen Einstellungen nach MHTML konvertieren.
from aspose.email import MailMessage, MhtSaveOptions, MhtFormatOptions, MailMessageSaveType, FileCompatibilityMode
# Load an existing EML file
eml = MailMessage.load(data_dir + "message.eml")
# Save as mht with header
mht_save_options = MhtSaveOptions()
# Specify formatting options required
# Here we are specifying to write header information to output without writing extra print header
# and the output headers should be displayed as the original headers in the message
mht_save_options.mht_format_options = MhtFormatOptions.WRITE_HEADER | MhtFormatOptions.HIDE_EXTRA_PRINT_HEADER | MhtFormatOptions.DISPLAY_AS_OUTLOOK
# Check the body encoding for validity.
mht_save_options.check_body_content_encoding = True
eml.save(data_dir + "outMessage_out.mht", mht_save_options)
Einbeziehen von Kalenderereignissen in die MHTML‑Konvertierung
Die MhtFormatOptions.RenderCalendarEvent rendert die Kalenderereignisse in das resultierende MHTML. Das folgende Code‑Snippet zeigt, wie Sie Kalenderereignisse beim Konvertieren nach MHTML rendern:
from aspose.email import MailMessage, MhtSaveOptions, MhtFormatOptions, MhtTemplateName, MailMessageSaveType, FileCompatibilityMode
file_name = "message.msg"
# Load the MSG file
msg = MailMessage.load(data_dir + file_name)
# Create MHT save options
options = MhtSaveOptions()
options.mht_format_options = MhtFormatOptions.WRITE_HEADER | MhtFormatOptions.RENDER_CALENDAR_EVENT
# Save the message as MHTML
msg.save(data_dir + "Meeting with Recurring Occurrences.mhtml", options)
Exportieren von E‑Mails nach MHT ohne Inline‑Bilder
from aspose.email import MailMessage, MhtSaveOptions, MhtFormatOptions, MhtTemplateName, MailMessageSaveType, FileCompatibilityMode
# Load the EML file
eml = MailMessage.load(data_dir + "message.eml")
# Create MHT save options
mht_save_options = MhtSaveOptions()
mht_save_options.skip_inline_images = True
# Save the message as MHTML without inline images
eml.save(data_dir + "EmlToMhtmlWithoutInlineImages_out.mht", mht_save_options)
Exportieren von E‑Mails nach MHT mit benutzerdefinierter Zeitzone
MailMessage class provides the TimeZoneOffset Eigenschaft zum Festlegen einer benutzerdefinierten Zeitzone beim Export nach MHT. Das folgende Code‑Snippet zeigt, wie Sie eine E‑Mail nach MHT mit benutzerdefinierter Zeitzone exportieren:
from aspose.email import MailMessage, MhtSaveOptions, MhtFormatOptions, MhtTemplateName, MailMessageSaveType, FileCompatibilityMode
from datetime import timedelta
# Load the EML file
eml = MailMessage.load(data_dir + "message.eml")
# Set the local time for message date
eml.time_zone_offset = timedelta(hours=-8)
# The dates will be rendered by the local system time zone
mht_save_options = MhtSaveOptions()
mht_save_options.mht_format_options = MhtFormatOptions.WRITE_HEADER
eml.save(data_dir + "ExportEmailToMHTWithCustomTimezone_out.mhtml", mht_save_options)
Speichern als HTML
Die HtmlSaveOptions Klasse ermöglicht das Exportieren des Nachrichteninhalts nach HTML mit der Option, eingebettete Ressourcen zu speichern. Das folgende Code‑Snippet zeigt, wie Sie eine Nachricht als HTML speichern, wobei der Standardwert von embed_resources true ist.
from aspose.email import MailMessage, SaveOptions, HtmlSaveOptions, HtmlFormatOptions
# Load the EML file
message = MailMessage.load(data_dir + "message.eml")
# Save the Email message as HTML
message.save(data_dir + "SaveAsHTML_out.html", SaveOptions.default_html)
# OR
eml = MailMessage.load(data_dir + "message.eml")
options = HtmlSaveOptions()
options.embed_resources = False
options.html_format_options = (
HtmlFormatOptions.WRITE_HEADER
| HtmlFormatOptions.WRITE_COMPLETE_EMAIL_ADDRESS
) # save the message headers to output HTML using the formatting options
eml.save(data_dir + "SaveAsHTML1_out.html", options)
Speichern als Outlook‑Vorlage (.OFT)
Das folgende Code‑Snippet zeigt, wie Sie eine Nachricht als Outlook‑Vorlage (.oft) speichern.
from aspose.email import MailMessage, SaveOptions
eml = MailMessage("test@from.to", "test@to.to", "template subject", "Template body")
oft_eml_file_name = "EmlAsOft_out.oft"
options = SaveOptions.default_msg_unicode
options.save_as_template = True
eml.save(data_dir + oft_eml_file_name, options)