Memuat, Menyimpan, dan Mengonversi Email
Mendeteksi Format File Email
Aspose.Email API menyediakan kemampuan untuk mendeteksi format file dari file pesan yang diberikan. The DetectFileFormat metode dari FileFormatUtil kelas dapat digunakan untuk mencapai ini. Kelas dan metode berikut dapat digunakan untuk mendeteksi format file yang dimuat:
- Enum FileFormatType
- Kelas FileFormatInfo
- Kelas FileFormatUtil
- Metode detect_file_format(stream)
- Metode detect_file_format(file_path)
Potongan kode berikut menunjukkan cara mendeteksi format file:
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))
Memuat Pesan dengan Opsi Muat
Potongan kode berikut menunjukkan cara memuat pesan dengan opsi muat.
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)
Mempertahankan Format Pesan Tersemat selama Memuat
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))
Menyimpan dan Mengonversi Email
Aspose.Email memudahkan konversi jenis pesan apa pun ke format lain. Untuk mendemonstrasikan fitur ini, kode dalam artikel ini memuat tiga jenis pesan dari disk dan menyimpannya kembali dalam format lain. Kelas dasar SaveOptions dan kelas EmlSaveOptions, MsgSaveOptions, MhtSaveOptions, HtmlSaveOptions dapat digunakan untuk pengaturan tambahan saat menyimpan pesan ke format lain. Artikel ini menunjukkan cara menggunakan kelas‑kelas ini untuk menyimpan contoh email sebagai:
- format EML.
- Outlook MSG.
- format MHTML.
- format HTML.
Menyimpan sebagai EML
Potongan kode berikut menunjukkan cara memuat pesan EML dan menyimpannya ke disk dalam format yang sama.
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)
Mempertahankan Batas dalam File EML
Potongan kode berikut menunjukkan cara memuat file EML dan menyimpannya dalam format yang sama sambil mempertahankan batas asli.
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)
Sesuaikan String Batas MIME
Aspose.Email untuk .NET memungkinkan Anda mengkonfigurasi templat batas yang digunakan dalam pesan MIME. Hal ini dicapai melalui boundaries_template properti dari EmlSaveOptions kelas.
Dengan mengatur templat khusus, Anda dapat menentukan bagaimana batas MIME dihasilkan. Wildcard {#} dalam templat akan diganti dengan nomor batas bertambah, memungkinkan string batas yang dinamis dan mudah dibaca.
Jika boundaries_template tidak diatur (default adalah None), perpustakaan menggunakan format batas internalnya.
Contoh kode berikut menunjukkan cara menyesuaikan string batas MIME saat menyimpan pesan email ke format .eml:
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)
Berikut adalah contoh struktur pesan dengan batas khusus yang disimpan menggunakan kode di atas:
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--
Mempertahankan Lampiran TNEF dalam File EML
Potongan kode berikut menunjukkan cara menyimpan file EML dengan mempertahankan lampiran TNEF.
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)
Menyimpan sebagai MSG
Potongan kode berikut menunjukkan cara memuat pesan EML dan mengkonversinya ke MSG menggunakan opsi yang tepat dari 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)
Mempertahankan Tanggal dalam File MSG
The MsgSaveOptions class memungkinkan Anda menyimpan pesan sumber sebagai file Outlook Message (MSG) dengan mempertahankan tanggal. Potongan kode berikut menunjukkan cara menyimpan file EML sebagai MSG dan mempertahankan tanggal.
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)
Menyimpan sebagai MHTML
Berbagai opsi MHTML dapat digunakan untuk memperoleh hasil yang diinginkan. Potongan kode berikut menunjukkan cara memuat pesan EML ke dalam MailMessage dan mengonversinya ke 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)
Pengaturan Konversi MHTML Kustom
The MhtSaveOptions kelas menyediakan opsi tambahan untuk menyimpan pesan email ke format MHTML. Enumerator MhtFormatOptions memungkinkan untuk menulis informasi email tambahan ke MHTML output. Bidang tambahan berikut dapat ditulis:
- NONE - Tidak ada pengaturan khusus yang ditentukan.
- WRITE_HEADER - Menunjukkan bahwa informasi header harus ditulis.
- WRITE_OUTLINE_ATTACHMENTS - Menunjukkan bahwa lampiran outline harus ditulis.
- WRITE_COMPLETE_EMAIL_ADDRESS - Menunjukkan bahwa alamat email lengkap harus ditulis di semua header email.
- NO_ENCODE_CHARACTERS - Menunjukkan bahwa tidak boleh menggunakan transfer encoding pada karakter.
- HIDE_EXTRA_PRINT_HEADER - Menunjukkan bahwa PageHeader akan tidak terlihat.
- WRITE_COMPLETE_TO_EMAIL_ADDRESS - Menunjukkan bahwa alamat email lengkap harus ditulis di header ‘To’.
- WRITE_COMPLETE_FROM_EMAIL_ADDRESS - Menunjukkan bahwa alamat email lengkap harus ditulis di header ‘From’.
- WRITE_COMPLETE_CC_EMAIL_ADDRESS - Menunjukkan bahwa alamat email lengkap harus ditulis di header ‘Cc’.
- WRITE_COMPLETE_BCC_EMAIL_ADDRESS - Menunjukkan bahwa alamat email lengkap harus ditulis di header ‘Bcc’.
- RENDER_CALENDAR_EVENT - Menunjukkan bahwa teks dari acara kalender harus ditulis dalam output mhtml.
- SKIP_BYTE_ORDER_MARK_IN_BODY - Menunjukkan bahwa byte Byte Order Mark (BOM) harus ditulis ke body.
- RENDER_V_CARD_INFO - Menunjukkan bahwa teks dari VCard AlternativeView harus ditulis dalam output mhtml.
- DISPLAY_AS_OUTLOOK - Menunjukkan bahwa header From akan ditampilkan seperti di Outlook.
- RENDER_TASK_FIELDS - Menunjukkan bahwa bidang Task tertentu harus ditulis dalam output mhtml.
Potongan kode berikut menunjukkan cara mengonversi file EML ke MHTML dengan pengaturan opsional.
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)
Menyertakan Acara Kalender dalam Konversi MHTML
The MhtFormatOptions.RenderCalendarEvent menghasilkan acara Kalender ke output MHTML. Potongan kode berikut menunjukkan cara merender acara kalender saat mengonversi ke MHTML:
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)
Mengekspor Email ke MHT tanpa Gambar Inline
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)
Mengekspor Email ke MHT dengan Zona Waktu Kustom
MailMessage class menyediakan TimeZoneOffset properti untuk mengatur zona waktu khusus saat mengekspor ke MHT. Potongan kode berikut menunjukkan cara mengekspor email ke MHT dengan zona waktu yang disesuaikan:
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)
Menyimpan sebagai HTML
The HtmlSaveOptions class memungkinkan Anda mengekspor isi pesan ke HTML dengan opsi menyimpan sumber daya tersemat. Potongan kode berikut menunjukkan cara menyimpan pesan sebagai HTML di mana nilai default embed_resources adalah true.
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)
Menyimpan sebagai Templat Outlook (.OFT)
Potongan kode berikut menunjukkan cara menyimpan pesan sebagai file templat Outlook (.oft).
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)