การโหลดและบันทึกข้อความ
การโหลดและบันทึกอีเมล
ตรวจจับรูปแบบไฟล์
Aspose.Email API ให้ความสามารถในการตรวจจับรูปแบบไฟล์ของไฟล์ข้อความที่ให้ไว้. The DetectFileFormat เมธอดของ FileFormatUtil คลาสนี้สามารถใช้เพื่อทำสิ่งนี้ได้. คลาสและเมธอดต่อไปนี้สามารถใช้เพื่อตรวจจับรูปแบบไฟล์ที่โหลด.
- FileFormatType คลาส
- FileFormatInfo คลาส
- FileFormatUtil คลาส
- FileFormatUtil.detectFileFormat(Stream) Method
- FileFormatUtil.detectFileFormat(String) Method
โค้ดตัวอย่างต่อไปนี้แสดงวิธีตรวจจับรูปแบบไฟล์.
โหลดอีเมล
เพื่อนำเข้าข้อความด้วยตัวเลือกการโหลดเฉพาะ, Aspose.Email มี LoadOptions คลาสที่สามารถใช้ได้ดังต่อไปนี้:
คงรูปแบบข้อความฝังระหว่างการโหลด
บันทึกและแปลงอีเมล
Aspose.Email ทำให้การแปลงประเภทข้อความใดๆ ไปยังรูปแบบอื่นเป็นเรื่องง่าย. เพื่อแสดงคุณลักษณะนี้, โค้ดในบทความนี้โหลดข้อความสามประเภทจากดิสก์และบันทึกกลับเป็นรูปแบบอื่น. คลาสฐาน SaveOptions และคลาส EmlSaveOptions, MsgSaveOptions, MhtSaveOptions, HtmlSaveOptions สำหรับการตั้งค่าเพิ่มเติมเมื่อบันทึก MailMessage สามารถใช้เพื่อบันทึกข้อความเป็นรูปแบบอื่น. บทความนี้แสดงวิธีใช้คลาสเหล่านี้เพื่อบันทึกอีเมลตัวอย่างเป็น:
- รูปแบบ EML.
- Outlook MSG.
- รูปแบบ MHTML.
- รูปแบบ HTML.
โหลดและบันทึกอีเมล
โค้ดตัวอย่างต่อไปนี้แสดงวิธีโหลดข้อความ EML และบันทึกลงดิสก์ในรูปแบบเดิม.
โหลดและบันทึกอีเมลโดยคงขอบเขตเดิม
โค้ดตัวอย่างต่อไปนี้แสดงวิธีโหลด EML และบันทึกเป็น EML โดยคงขอบเขตเดิมไว้.
บันทึกเป็น EML คงไฟล์แนบ TNEF
โค้ดตัวอย่างต่อไปนี้แสดงวิธีบันทึกเป็น EML โดยคงไฟล์แนบ TNEF ไว้.
บันทึก EML เป็น MSG
โค้ดตัวอย่างต่อไปนี้แสดงวิธีโหลดข้อความ EML และแปลงเป็น MSG โดยใช้ตัวเลือกที่เหมาะสมจาก SaveOptions.
บันทึก EML เป็น MSG พร้อมคงวันที่
นี้ MsgSaveOptions คลาสนี้อนุญาตให้คุณบันทึกข้อความต้นฉบับเป็นไฟล์ Outlook Message (MSG) โดยคงวันที่ไว้. โค้ดตัวอย่างต่อไปนี้แสดงวิธีบันทึกเป็น MSG พร้อมคงวันที่.
บันทึก EML เป็น MHTML
ตัวเลือกต่างๆ ของ MHTML สามารถใช้เพื่อให้ได้ผลลัพธ์ที่ต้องการ. โค้ดตัวอย่างต่อไปนี้แสดงวิธีโหลดข้อความ EML เข้าไปใน MailMessage และแปลงเป็น MHTML พร้อมวันที่ข้อความในระบบ 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);
}
จัดรูปแบบส่วนหัว MHT อย่างทั่วโลกเมื่อบันทึกจาก EML
ด้วย Aspose.Email คุณสามารถใช้ตัวเลือกการจัดรูปแบบทั่วโลกสำหรับส่วนหัว Mht. ตัวเลือกทั่วโลกกำหนดการจัดรูปแบบร่วมของส่วนหัว Mht สำหรับทุก MhtSaveOptions อินสแตนซ์. ฟีเจอร์นี้ออกแบบมาเพื่อหลีกเลี่ยงการตั้งค่ารูปแบบสำหรับแต่ละอินสแตนซ์ของ MhtSaveOptions.
ใช้เมธอดต่อไปนี้ของ GlobalFormattingOptions คลาสและตัวอย่างโค้ดด้านล่างเพื่อกำหนดรูปแบบของส่วนหัว Mht:
- setPageHeaderFormat(String value) - PageHeaderFormat สำหรับอินสแตนซ์ของ HeadersFormattingOptions หาก DefaultPageHeaderFormat ไม่ได้ตั้งค่า.
- setHeaderFormat(String value) - HeaderFormat สำหรับอินสแตนซ์ของ HeadersFormattingOptions หาก DefaultHeaderFormat ไม่ได้ตั้งค่า.
- setBeforeHeadersFormat(String value) - BeforeHeadersFormat สำหรับอินสแตนซ์ของ HeadersFormattingOptions หาก BeforeHeadersFormat ไม่ได้ตั้งค่า.
- setAfterHeadersFormat(String value) - AfterHeadersFormat สำหรับอินสแตนซ์ของ HeadersFormattingOptions หาก AfterHeadersFormat ไม่ได้ตั้งค่า.
// saveOptions1 and saveOptions2 have the same mht header formatting
MhtSaveOptions saveOptions1 = new MhtSaveOptions();
MhtSaveOptions saveOptions2 = new MhtSaveOptions();
แปลง EML เป็น MHTML พร้อมการตั้งค่าเพิ่มเติม
นี้ MhtSaveOptions คลาสนี้ให้ตัวเลือกเพิ่มเติมสำหรับการบันทึกอีเมลเป็นรูปแบบ MHTML. ตัวนับค่า MhtFormatOptions ทำให้สามารถเขียนข้อมูลอีเมลเพิ่มเติมลงไฟล์ MHTML ได้. ฟิลด์เพิ่มเติมต่อไปนี้สามารถเขียนได้:
- WriteHeader - เขียนส่วนหัวอีเมลลงไฟล์ผลลัพธ์.
- WriteOutlineAttachments - เขียนไฟล์แนบโครงร่างลงไฟล์ผลลัพธ์.
- WriteCompleteEmailAddress - เขียนที่อยู่อีเมลเต็มลงไฟล์ผลลัพธ์.
- NoEncodeCharacters - ไม่ควรใช้การเข้ารหัสการส่งอักขระ.
- HideExtraPrintHeader - ซ่อนส่วนหัวพิมพ์พิเศษจากบนไฟล์ผลลัพธ์.
- WriteCompleteToEmailAddress - เขียนที่อยู่อีเมลผู้รับเต็มลงไฟล์ผลลัพธ์.
- WriteCompleteFromEmailAddress - เขียนที่อยู่อีเมลผู้ส่งเต็มลงไฟล์ผลลัพธ์.
- WriteCompleteCcEmailAddress - เขียนที่อยู่อีเมลเต็มของผู้รับ CC ลงไฟล์ผลลัพธ์.
- WriteCompleteBccEmailAddress - เขียนที่อยู่อีเมลเต็มของผู้รับ BCC ลงไฟล์ผลลัพธ์.
- RenderCalendarEvent - เขียนข้อความจากเหตุการณ์ปฏิทินลงไฟล์ผลลัพธ์.
- SkipByteOrderMarkInBody - เขียนไบต์ Byte Order Mark (BOM) ลงไฟล์ผลลัพธ์.
- RenderVCardInfo - เขียนข้อความจาก VCard AlternativeView ลงไฟล์ผลลัพธ์.
- DisplayOutlook - แสดงส่วนหัว From.
- RenderTaskFields - เขียนฟิลด์งานเฉพาะลงไฟล์ผลลัพธ์.
- ไม่มี - ไม่ได้ระบุการตั้งค่า.
โค้ดตัวอย่างต่อไปนี้แสดงวิธีแปลงไฟล์ EML เป็น MHTML พร้อมการตั้งค่าเพิ่มเติม.
เรนเดอร์เหตุการณ์ปฏิทินขณะแปลงเป็น MHTML
นี้ MhtFormatOptions.RenderCalendarEvent เรนเดอร์เหตุการณ์ปฏิทินไปยัง MTHML ผลลัพธ์. โค้ดตัวอย่างต่อไปนี้แสดงวิธีเรนเดอร์เหตุการณ์ปฏิทินขณะแปลงเป็น MHTML.
ส่งออกอีเมลเป็น MHT โดยไม่มีภาพในบรรทัด
ส่งออกอีเมลเป็น MHT พร้อมเขตเวลาแบบกำหนดเอง
MailMessage class ให้ setTimeZoneOffset คุณสมบัติสำหรับตั้งค่าเขตเวลาแบบกำหนดเองเมื่อส่งออกเป็น MHT. โค้ดตัวอย่างต่อไปนี้แสดงวิธีการส่งออกอีเมลเป็น MHT พร้อมตั้งค่าเขตเวลาแบบกำหนดเอง.
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);
การส่งออกอีเมลเป็น EML
โค้ดตัวอย่างต่อไปนี้แสดงวิธีการส่งออกอีเมลเป็นไฟล์ EML.
บันทึกอีเมลเป็น HTML
นี้ HtmlSaveOptions คลาสที่ช่วยให้คุณส่งออกเนื้อความของข้อความเป็น HTML. โค้ดตัวอย่างต่อไปนี้แสดงวิธีการบันทึกข้อความเป็น HTML.
บันทึกข้อความอีเมลเป็น HTML ด้วยเส้นทางสัมพันธ์ไปยังทรัพยากร
เมื่อส่งออกข้อความอีเมลเป็นรูปแบบ HTML, สามารถเลือกบันทึกทรัพยากรอีเมลด้วยเส้นทางสัมพันธ์ได้. ฟีเจอร์นี้ให้ความยืดหยุ่นมากขึ้นในการเชื่อมโยงทรัพยากรในไฟล์ HTML ผลลัพธ์, ทำให้การแชร์และแสดงอีเมลที่บันทึกไว้บนระบบต่างๆ ง่ายขึ้น. HtmlSaveOptions.UseRelativePathToResources คุณสมบัตินี้ให้ความสามารถในการบันทึกทรัพยากรด้วยเส้นทางสัมพันธ์. ค่าเริ่มต้นของคุณสมบัติคือ false (ทรัพยากรจะถูกบันทึกด้วยเส้นทางสัมบูรณ์). เมื่อกำหนดเป็น true, ทรัพยากรจะถูกบันทึกด้วยเส้นทางสัมพันธ์. ไฟล์ HTML ที่ใช้เส้นทางสัมพันธ์จะพกพาง่ายขึ้นและสามารถดูได้อย่างถูกต้องไม่ว่ารูปแบบไฟล์ของสภาพแวดล้อมโฮสต์จะเป็นอย่างไร. คุณสามารถเลือกใช้เส้นทางสัมบูรณ์หรือสัมพันธ์ตามความต้องการ. คุณสามารถกำหนดเส้นทางกำหนดเองสำหรับทรัพยากรโดยใช้ ResourceHtmlRenderingHandler เหตุการณ์.
บันทึกด้วยเส้นทางสัมพันธ์เริ่มต้นไปยังทรัพยากร
MapiMessage msg = MapiMessage.load(sourceFileName);
HtmlSaveOptions htmlSaveOptions = new HtmlSaveOptions();
htmlSaveOptions.setResourceRenderingMode(ResourceRenderingMode.SaveToFile);
htmlSaveOptions.setUseRelativePathToResources(true);
msg.save("target.html", htmlSaveOptions);
ในกรณีนี้, ทรัพยากรจะถูกบันทึกในโฟลเดอร์ [html file name].files, ในเส้นทางเดียวกับไฟล์ .html และ HTML จะอ้างอิงทรัพยากรผ่านเส้นทางสัมพันธ์.
บันทึกด้วยเส้นทางสัมบูรณ์ไปยังทรัพยากร
MapiMessage msg = MapiMessage.load(sourceFileName);
HtmlSaveOptions htmlSaveOptions = new HtmlSaveOptions();
htmlSaveOptions.setResourceRenderingMode(ResourceRenderingMode.SaveToFile);
htmlSaveOptions.setUseRelativePathToResources(false);
msg.save("target.html", htmlSaveOptions);
เช่นในกรณีแรก, ทรัพยากรจะถูกบันทึกในโฟลเดอร์ [html file name].files โดยค่าเริ่มต้น, แต่ HTML จะอ้างอิงทรัพยากรโดยใช้เส้นทางสัมบูรณ์.
เส้นทางสัมพันธ์แบบกำหนดเองโดยใช้เหตุการณ์ 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);
โดยใช้ ResourceHtmlRenderingHandler เหตุการณ์, คุณสามารถตั้งค่าเส้นทางสัมพันธ์หรือสัมบูรณ์แบบกำหนดเองสำหรับทรัพยากร. เมื่อปรับแต่งเส้นทางด้วย ResourceHtmlRenderingHandler ตัวจัดการเหตุการณ์, และเนื่องจาก UseRelativePathToResources เมื่อกำหนดเป็น true, คุณควรกำหนดเส้นทางสัมพันธ์ให้กับ PathToResourceFile คุณสมบัติสำหรับรับรองการอ้างอิงที่ถูกต้อง.
รักษาไอคอนที่กำหนดเองในข้อความขณะแปลงเป็น HTML
บางครั้งข้อความอาจมีไฟล์แนบแบบในบรรทัด ซึ่งจะแสดงเป็นภาพไอคอนในส่วนเนื้อหาข้อความ. ข้อความเช่นนี้อาจทำให้เกิดปัญหาเมื่อต้องแปลงเป็น HTML เนื่องจากภาพไอคอนจะหายไป. สาเหตุคือไอคอนของไฟล์แนบไม่ได้ถูกบรรจุโดยตรงในข้อความ.
ผู้ใช้ Aspose.Email สามารถปรับแต่งไอคอนของไฟล์แนบเมื่อแปลงข้อความเป็น HTML. สำหรับการนั้น, HtmlSaveOptions.ResourceHtmlRendering เหตุการณ์นี้ใช้เพื่อปรับแต่งการแสดงผลของไฟล์ทรัพยากร (เช่น ไฟล์แนบ) เมื่อบันทึกข้อความอีเมลเป็นไฟล์ HTML. ในตัวอย่างโค้ดด้านล่าง ตัวจัดการเหตุการณ์จะตั้งค่าเส้นทางไปยังไฟล์ทรัพยากร (ไอคอน) อย่างไดนามิกตามประเภทเนื้อหาของไฟล์แนบ. สิ่งนี้ทำให้สามารถแสดงผลทรัพยากรในผลลัพธ์ HTML ได้ตามประเภทไฟล์ที่กำหนดเอง.
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);
ตั้งเวลาและเขตเวลาเมื่อบันทึก EML เป็น HTML
ผู้ใช้ Aspose.Email สามารถตั้งรูปแบบการแสดงเวลาและเขตเวลาใน HtmlSaveOptions. ส่วน HeadersFormattingOptions คลาสที่ช่วยให้กำหนดตัวเลือกการจัดรูปแบบส่วนหัวเมื่อบันทึก MailMessage เป็นรูปแบบ Mhtml หรือ Html. วิธีต่อไปนี้ของ HtmlFormatOptions คลาสที่ระบุฟิลด์ที่จะปรากฏในไฟล์ผลลัพธ์:
- RenderCalendarEvent - แสดงว่าข้อความจากเหตุการณ์ปฏิทินควรเขียนลงใน mhtml ที่ส่งออก.
- RenderVCardInfo - แสดงว่าข้อความจาก VCard AlternativeView ควรเขียนลงใน HTML ที่ส่งออก.
โค้ดตัวอย่างต่อไปนี้แสดงวิธีตั้งเวลาและเขตเวลาขณะบันทึก EML เป็น 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");
บันทึกเป็น HTML โดยไม่ฝังทรัพยากร
บันทึกข้อความเป็นไฟล์เทมเพลต Outlook (.oft)
โค้ดตัวอย่างต่อไปนี้แสดงวิธีบันทึกข้อความเป็นไฟล์เทมเพลต Outlook (.oft).