Memuat dan Menyimpan Pesan
Memuat dan Menyimpan Pesan Email
Deteksi Format File
API Aspose.Email 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.
- FileFormatType Kelas
- FileFormatInfo Kelas
- FileFormatUtil Kelas
- FileFormatUtil.detectFileFormat(Stream) Method
- FileFormatUtil.detectFileFormat(String) Method
Potongan kode berikut menunjukkan cara mendeteksi format file.
Muat Pesan Email
Untuk memuat sebuah pesan dengan opsi muat khusus, Aspose.Email menyediakan the LoadOptions kelas yang dapat digunakan sebagai berikut:
Pertahankan Format Pesan Tersemat saat Memuat
Simpan dan Konversi Pesan 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 untuk pengaturan tambahan saat menyimpan MailMessage dapat digunakan untuk menyimpan pesan ke format lain. Artikel ini menunjukkan cara menggunakan kelas ini untuk menyimpan contoh email sebagai:
- format EML.
- Outlook MSG.
- format MHTML.
- format HTML.
Muat dan Simpan Pesan Email
Potongan kode berikut menunjukkan cara memuat pesan EML dan menyimpannya ke disk dalam format yang sama.
Muat dan Simpan Pesan Email dengan Mempertahankan Batas Asli
Potongan kode berikut menunjukkan cara memuat EML dan menyimpannya sebagai EML sambil mempertahankan batas asli.
Menyimpan sebagai EML dengan Mempertahankan Lampiran TNEF
Potongan kode berikut menunjukkan cara menyimpan sebagai EML sambil mempertahankan lampiran TNEF.
Simpan EML ke MSG
Potongan kode berikut menunjukkan cara memuat pesan EML dan mengonversinya ke MSG menggunakan opsi yang tepat dari SaveOptions.
Simpan EML ke MSG dengan Tanggal yang Dipertahankan
The MsgSaveOptions kelas memungkinkan Anda menyimpan pesan sumber sebagai file Outlook Message (MSG) dengan mempertahankan tanggal. Potongan kode berikut menunjukkan cara Menyimpan sebagai MSG dengan Tanggal yang Dipertahankan.
Simpan EML 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 dengan tanggal pesan dalam sistem UTC.
// Set options for MHTML output
MhtSaveOptions saveOptions = SaveOptions.getDefaultMhtml();
// save a message date as UTC date
saveOptions.setPreserveOriginalDate(false);
// Initialize and load an existing EML file
try (MailMessage mailMessage = MailMessage.load(dataDir + "Message.eml")) {
mailMessage.save(outDir + "Message_out.mhtml", saveOptions);
}
Format Header MHT secara Global saat Menyimpan dari EML
Dengan Aspose.Email, Anda dapat menggunakan opsi pemformatan global untuk header Mht. Opsi global mengatur pemformatan umum header Mht untuk semua MhtSaveOptions instance. Fitur ini dirancang untuk menghindari pengaturan pemformatan untuk setiap instance dari MhtSaveOptions.
Gunakan metode berikut dari GlobalFormattingOptions kelas dan contoh kode di bawah untuk mengatur pemformatan header Mht:
- setPageHeaderFormat(String value) - PageHeaderFormat untuk instance HeadersFormattingOptions jika DefaultPageHeaderFormat tidak diatur.
- setHeaderFormat(String value) - HeaderFormat untuk instance HeadersFormattingOptions jika DefaultHeaderFormat tidak diatur.
- setBeforeHeadersFormat(String value) - BeforeHeadersFormat untuk instance HeadersFormattingOptions jika BeforeHeadersFormat tidak diatur.
- setAfterHeadersFormat(String value) - AfterHeadersFormat untuk instance HeadersFormattingOptions jika AfterHeadersFormat tidak diatur.
// saveOptions1 and saveOptions2 have the same mht header formatting
MhtSaveOptions saveOptions1 = new MhtSaveOptions();
MhtSaveOptions saveOptions2 = new MhtSaveOptions();
Konversi EML ke MHTML dengan Pengaturan Opsional
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:
- WriteHeader - menulis header email ke file output.
- WriteOutlineAttachments - menulis lampiran outline ke file output.
- WriteCompleteEmailAddress - menulis alamat email lengkap ke file output.
- NoEncodeCharacters - tidak ada enkoding transfer karakter yang harus digunakan.
- HideExtraPrintHeader - menyembunyikan header cetak tambahan dari bagian atas file output.
- WriteCompleteToEmailAddress - menulis alamat email lengkap penerima ke file output.
- WriteCompleteFromEmailAddress - menulis alamat email lengkap pengirim ke file output.
- WriteCompleteCcEmailAddress - menulis alamat email lengkap dari semua penerima CC ke file output.
- WriteCompleteBccEmailAddress - menulis alamat email lengkap dari semua penerima BCC ke file output.
- RenderCalendarEvent - menulis teks dari acara kalender ke file output.
- SkipByteOrderMarkInBody - menulis byte Byte Order Mark (BOM) ke file output.
- RenderVCardInfo - menulis teks dari VCard AlternativeView ke file output.
- DisplayAsOutlook - menampilkan header From.
- RenderTaskFields - menulis bidang Tugas tertentu ke file output.
- Tidak ada - Tidak ada pengaturan yang ditentukan.
Potongan kode berikut menunjukkan cara mengonversi file EML ke MHTML dengan pengaturan opsional.
Render Acara Kalender saat Mengonversi ke MHTML
The MhtFormatOptions.RenderCalendarEvent menampilkan acara Kalender ke output MTHML. Potongan kode berikut menunjukkan cara merender acara kalender saat mengonversi ke MHTML.
Ekspor Email ke MHT tanpa Gambar Inline
Ekspor Email ke MHT dengan Zona Waktu yang Disesuaikan
MailMessage class menyediakan setTimeZoneOffset properti untuk mengatur Zona Waktu khusus saat mengekspor ke MHT. Potongan kode berikut menunjukkan cara mengekspor email ke MHT dengan Zona Waktu yang disesuaikan.
MailMessage msg = MailMessage.load(filename, new MsgLoadOptions());
msg.setDate(new Date());
// Set the timezone offset in milliseconds
msg.setTimeZoneOffset(5*60*60*1000);
MhtSaveOptions mhtOptions = new MhtSaveOptions();
mhtOptions.setMhtFormatOptions(MhtFormatOptions.WriteHeader);
msg.save(dataDir + "ExportToMHTWithCustomTimezone_out.mhtml", mhtOptions);
Mengekspor Email ke EML
Potongan kode berikut menunjukkan cara mengekspor email ke format EML.
Simpan Email sebagai HTML
The HtmlSaveOptions kelas memungkinkan Anda mengekspor isi pesan ke HTML. Potongan kode berikut menunjukkan cara menyimpan pesan sebagai HTML.
Simpan Pesan Email sebagai HTML dengan Jalur Relatif ke Sumber Daya
Saat mengekspor pesan email ke format HTML, Anda dapat memilih untuk menyimpan sumber daya email dengan jalur relatif. Fitur ini memberikan fleksibilitas lebih dalam cara sumber daya ditautkan dalam berkas HTML output, memudahkan berbagi dan menampilkan email yang disimpan pada sistem yang berbeda. HtmlSaveOptions.UseRelativePathToResources properti menyediakan kemampuan untuk menyimpan sumber daya dengan jalur relatif. Nilai properti default adalah false (sumber daya disimpan dengan jalur absolut). Ketika diatur ke true, sumber daya disimpan dengan jalur relatif. Berkas HTML dengan jalur relatif lebih portabel dan dapat dilihat dengan benar terlepas dari struktur file lingkungan hosting. Anda dapat memilih antara jalur absolut dan relatif sesuai kebutuhan. Anda dapat menentukan jalur kustom untuk sumber daya menggunakan ResourceHtmlRenderingHandler event.
Simpan dengan Jalur Relatif Default ke Sumber Daya
MapiMessage msg = MapiMessage.load(sourceFileName);
HtmlSaveOptions htmlSaveOptions = new HtmlSaveOptions();
htmlSaveOptions.setResourceRenderingMode(ResourceRenderingMode.SaveToFile);
htmlSaveOptions.setUseRelativePathToResources(true);
msg.save("target.html", htmlSaveOptions);
Dalam kasus ini, sumber daya akan disimpan di folder [nama file html].files, pada jalur yang sama dengan berkas .html dan HTML akan merujuk ke sumber daya melalui jalur relatif.
Simpan dengan Jalur Absolut ke Sumber Daya
MapiMessage msg = MapiMessage.load(sourceFileName);
HtmlSaveOptions htmlSaveOptions = new HtmlSaveOptions();
htmlSaveOptions.setResourceRenderingMode(ResourceRenderingMode.SaveToFile);
htmlSaveOptions.setUseRelativePathToResources(false);
msg.save("target.html", htmlSaveOptions);
Seperti pada kasus pertama, sumber daya akan disimpan di folder [nama file html].files secara default, tetapi HTML akan merujuk ke sumber daya menggunakan jalur absolut.
Jalur Relatif Kustom menggunakan Event ResourceHtmlRenderingHandler
MapiMessage msg = MapiMessage.load(sourceFileName);
HtmlSaveOptions htmlSaveOptions = new HtmlSaveOptions();
htmlSaveOptions.setResourceRenderingMode(ResourceRenderingMode.SaveToFile);
htmlSaveOptions.setUseRelativePathToResources(false);
htmlSaveOptions.setResourceHtmlRenderingHandler(new ResourceHtmlRenderingHandler() {
@Override
public void invoke(Object sender, ResourceHtmlRenderingEventArgs args) {
if (sender instanceof AttachmentBase) {
AttachmentBase attachment = (AttachmentBase) sender;
// Since UseRelativePathToResources = true, you should assign a relative path to the PathToResourceFile property.
args.setPathToResourceFile("images\\" + attachment.getContentType().getName());
}
}
});
msg.save(targetPath + "A Day in the Park.html", htmlSaveOptions);
Dengan menggunakan ResourceHtmlRenderingHandler event, Anda dapat mengatur jalur relatif atau absolut khusus untuk sumber daya. Saat menyesuaikan jalur dengan ResourceHtmlRenderingHandler penangkap acara, dan karena UseRelativePathToResources diatur menjadi true, Anda harus menetapkan jalur relatif ke PathToResourceFile properti untuk memastikan referensi yang tepat.
Pertahankan Ikon Kustom dalam Pesan saat Mengonversi ke HTML
Kadang-kadang, pesan berisi lampiran sebaris yang ditampilkan sebagai gambar ikon di isi pesan. Pesan semacam itu dapat menimbulkan masalah saat dikonversi ke HTML, karena gambar ikon hilang. Hal ini terjadi karena ikon lampiran tidak disimpan langsung dalam pesan.
Pengguna Aspose.Email dapat menyesuaikan ikon untuk lampiran saat mengonversi pesan ke HTML. Untuk itu, HtmlSaveOptions.ResourceHtmlRendering event digunakan untuk menyesuaikan rendering berkas sumber daya (seperti lampiran) saat menyimpan pesan email sebagai berkas HTML. Dalam contoh kode di bawah, penangan acara digunakan untuk secara dinamis mengatur jalur ke berkas sumber daya (ikon) berdasarkan tipe konten lampiran. Hal ini memungkinkan rendering khusus sumber daya dalam output HTML berdasarkan tipe berkas mereka.
HtmlSaveOptions options = new HtmlSaveOptions();
options.setResourceHtmlRenderingHandler(new ResourceHtmlRenderingHandler() {
@Override
public void invoke(Object sender, ResourceHtmlRenderingEventArgs e) {
AttachmentBase attachment = (AttachmentBase) sender;
e.setCaption(attachment.getContentType().getName());
if (attachment.getContentType().getName().endsWith(".pdf")) {
e.setPathToResourceFile("pdf_icon.png");
} else if (attachment.getContentType().getName().endsWith(".docx")) {
e.setPathToResourceFile("word_icon.jpg");
} else if (attachment.getContentType().getName().endsWith(".jpg")) {
e.setPathToResourceFile("jpeg_icon.png");
} else {
e.setPathToResourceFile("not_found_icon.png");
}
}
});
options.setResourceRenderingMode(ResourceRenderingMode.SubstituteFromFile);
String fileName = "message.msg";
MailMessage mailMessage = MailMessage.load(fileName);
mailMessage.save("fileName.html", options);
Atur Waktu dan Zona Waktu saat Menyimpan EML sebagai HTML
Pengguna Aspose.Email dapat mengatur format tampilan waktu dan zona waktu di HtmlSaveOptions. The HeadersFormattingOptions kelas memungkinkan menentukan opsi pemformatan header saat menyimpan MailMessage ke format Mhtml atau Html. Metode-metode berikut dari HtmlFormatOptions kelas yang menentukan bidang-bidang yang akan ditampilkan dalam file output:
- RenderCalendarEvent - Menunjukkan bahwa teks dari acara kalender harus ditulis dalam output mhtml.
- RenderVCardInfo - Menunjukkan bahwa teks dari VCard AlternativeView harus ditulis dalam output html.
Contoh kode berikut menunjukkan cara mengatur waktu dan zona waktu saat menyimpan EML ke HTML:
MailMessage msg = MailMessage.load("fileName");
HtmlSaveOptions options = new HtmlSaveOptions();
options.setHtmlFormatOptions(HtmlFormatOptions.WriteHeader);
options.getFormatTemplates().set_Item("DateTime", "MM d yyyy HH:mm tt");
Menyimpan sebagai HTML tanpa Menyematkan Sumber Daya
Menyimpan Pesan sebagai Templat Outlook (.oft) file
Potongan kode berikut menunjukkan cara menyimpan pesan sebagai berkas templat Outlook (.oft).