Зареждане и запазване на съобщения
Зареждане и запазване на имейл съобщения
Откриване на файлов формат
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 - записва байтове на маркера за реда на байтовете (BOM) във изходния файл.
- RenderVCardInfo - записва текст от VCard AlternativeView във изходния файл.
- DisplayAsOutlook - показва заглавието От.
- RenderTaskFields - записва специфични полета на задачата във изходния файл.
- Никакво - Не е зададена настройка.
Следният примерен код показва как да конвертирате EML файлове в MHTML с опционални настройки.
Извеждане на календарни събития при конвертиране към MHTML
Този MhtFormatOptions.RenderCalendarEvent извежда календарните събития в изходния MTHML. Следният примерен код показва как да извеждате календарни събития, докато конвертирате към MHTML.
Експортиране на имейл към MHT без вградени изображения
Експортиране на имейл в MHT с персонализиран часови пояс
MailMessage клас предоставя 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. The 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) файл.