Načítání a ukládání zpráv
Načítání a ukládání e‑mailových zpráv
Detekovat formát souboru
Aspose.Email API poskytuje možnost detekovat formát souboru poskytnuté zprávy. The DetectFileFormat metoda třídy FileFormatUtil Třída může být použita k dosažení tohoto cíle. Následující třídy a metody lze použít k detekci načteného formátu souboru.
- FileFormatType Třída
- FileFormatInfo Třída
- FileFormatUtil Třída
- FileFormatUtil.detectFileFormat(Stream) Method
- FileFormatUtil.detectFileFormat(String) Method
Následující úryvek kódu vám ukáže, jak detekovat formáty souborů.
Načíst e‑mailovou zprávu
Pro načtení zprávy s konkrétními možnostmi načtení Aspose.Email poskytuje LoadOptions Třída, která může být použita následovně:
Zachovat formát vložené zprávy během načítání
Uložit a převést e‑mailové zprávy
Aspose.Email usnadňuje konverzi libovolného typu zprávy do jiného formátu. K demonstraci této funkce kód v tomto článku načte tři typy zpráv z disku a uloží je zpět v jiných formátech. Základní třída SaveOptions a třídy EmlSaveOptions, MsgSaveOptions, MhtSaveOptions, HtmlSaveOptions pro další nastavení při ukládání MailMessage Lze použít pro ukládání zpráv do jiných formátů. Článek ukazuje, jak použít tyto třídy k uložení ukázkového e‑mailu jako:
- EML formát.
- Outlook MSG.
- MHTML formát.
- HTML formát.
Načíst a uložit e‑mailovou zprávu
Následující úryvek kódu vám ukáže, jak načíst zprávu EML a uložit ji na disk ve stejném formátu.
Načíst a uložit e‑mailovou zprávu zachovávajíc původní hranice
Následující úryvek kódu vám ukáže, jak načíst EML a uložit jako EML zachovávajíc původní hranice.
Ukládání jako EML zachovávajíc přílohy TNEF
Následující úryvek kódu vám ukáže, jak uložit jako EML zachovávajíc přílohy TNEF.
Uložit EML do MSG
Následující úryvek kódu vám ukáže, jak načíst zprávu EML a převést ji na MSG pomocí vhodné volby z SaveOptions.
Uložit EML do MSG se zachovanými daty
The MsgSaveOptions Třída umožňuje uložit zdrojovou zprávu jako soubor Outlook Message (MSG) s zachováním data. Následující úryvek kódu vám ukáže, jak uložit jako MSG se zachovanými daty.
Uložit EML jako MHTML
Různé možnosti MHTML lze použít k dosažení požadovaných výsledků. Následující úryvek kódu vám ukáže, jak načíst zprávu EML do MailMessage a převést ji na MHTML s datem zprávy v UTC systému.
// 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);
}
Formátovat MHT hlavičky globálně při ukládání z EML
S Aspose.Email můžete použít globální možnosti formátování pro hlavičku Mht. Globální možnosti nastavují společné formátování hlavičky Mht pro všechny MhtSaveOptions instancí. Tato funkce je navržena tak, aby se předešlo nastavení formátování pro každou instanci MhtSaveOptions.
Použijte následující metody z GlobalFormattingOptions Třída a níže uvedený ukázkový kód pro nastavení formátování hlavičky Mht:
- setPageHeaderFormat(String value) - PageHeaderFormat pro instance HeadersFormattingOptions, pokud není DefaultPageHeaderFormat nastaven.
- setHeaderFormat(String value) - HeaderFormat pro instance HeadersFormattingOptions, pokud není DefaultHeaderFormat nastaven.
- setBeforeHeadersFormat(String value) - BeforeHeadersFormat pro instance HeadersFormattingOptions, pokud není BeforeHeadersFormat nastaven.
- setAfterHeadersFormat(String value) - AfterHeadersFormat pro instance HeadersFormattingOptions, pokud není AfterHeadersFormat nastaven.
// saveOptions1 and saveOptions2 have the same mht header formatting
MhtSaveOptions saveOptions1 = new MhtSaveOptions();
MhtSaveOptions saveOptions2 = new MhtSaveOptions();
Převést EML na MHTML s volitelnými nastaveními
The MhtSaveOptions Třída poskytuje další možnosti pro ukládání e‑mailových zpráv do formátu MHTML. Enumerator MhtFormatOptions Umožňuje zapisovat další informace o e‑mailu do výstupního MHTML. Následující další pole lze zapsat:
- WriteHeader - zapíše e‑mailovou hlavičku do výstupního souboru.
- WriteOutlineAttachments - zapíše náčrtové přílohy do výstupního souboru.
- WriteCompleteEmailAddress - zapíše úplnou e‑mailovou adresu do výstupního souboru.
- NoEncodeCharacters - nemělo by být použito žádné kódování přenosu znaků.
- HideExtraPrintHeader - skryje nadbytečnou tiskovou hlavičku na vrcholu výstupního souboru.
- WriteCompleteToEmailAddress - zapíše úplnou e‑mailovou adresu příjemce do výstupního souboru.
- WriteCompleteFromEmailAddress - zapíše úplnou e‑mailovou adresu odesílatele do výstupního souboru.
- WriteCompleteCcEmailAddress - zapíše úplné e‑mailové adresy všech příjemců kopírovaných (CC) do výstupního souboru.
- WriteCompleteBccEmailAddress - zapíše úplnou e‑mailovou adresu všech příjemců skrytě kopírovaných (BCC) do výstupního souboru.
- RenderCalendarEvent - zapíše text z kalendářové události do výstupního souboru.
- SkipByteOrderMarkInBody - zapíše bajty Byte Order Mark (BOM) do výstupního souboru.
- RenderVCardInfo - zapíše text z VCard AlternativeView do výstupního souboru.
- DisplayAsOutlook - zobrazí hlavičku From.
- RenderTaskFields - zapíše konkrétní pole úkolu do výstupního souboru.
- Žádné - Nebylo zadáno nastavení.
Následující úryvek kódu vám ukáže, jak převést soubory EML do MHTML s volitelnými nastaveními.
Vykreslit kalendářové události při převodu na MHTML
The MhtFormatOptions.RenderCalendarEvent zobrazí kalendářové události ve výstupním MHTML. Následující úryvek kódu vám ukáže, jak vykreslit kalendářové události při převodu na MHTML.
Exportovat e‑mail do MHT bez vložených obrázků
Export e‑mailu do MHT s přizpůsobeným časovým pásmem
MailMessage třída poskytuje setTimeZoneOffset vlastnost pro nastavení vlastního časového pásma při exportu do MHT. Následující úryvek kódu vám ukazuje, jak exportovat e‑mail do MHT s přizpůsobeným časovým pásmem.
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);
Export e‑mailu do EML
Následující úryvek kódu vám ukazuje, jak exportovat e‑mailové zprávy do formátu EML.
Uložit e‑mail jako HTML
The HtmlSaveOptions třída umožňuje exportovat tělo zprávy do HTML. Následující úryvek kódu vám ukazuje, jak uložit zprávu jako HTML.
Uložit e‑mailovou zprávu jako HTML s relativní cestou ke zdrojům
Při exportu e‑mailových zpráv do formátu HTML je možné zvolit uložení zdrojů e‑mailu s relativními cestami. Tato funkce poskytuje větší flexibilitu v tom, jak jsou zdroje propojeny ve výstupním HTML souboru, což usnadňuje sdílení a zobrazování uložených e‑mailů na různých systémech. HtmlSaveOptions.UseRelativePathToResources vlastnost poskytuje možnost ukládat zdroje s relativními cestami. Výchozí hodnota vlastnosti je false (zdroje jsou ukládány s absolutními cestami). Když je nastavena na true, zdroje jsou ukládány s relativními cestami. HTML soubory s relativními cestami jsou přenosnější a lze je zobrazit správně bez ohledu na strukturu souborů v hostitelském prostředí. Můžete si vybrat mezi absolutními a relativními cestami podle požadavků. Vlastní cesty pro zdroje můžete definovat pomocí ResourceHtmlRenderingHandler událost.
Uložit s výchozí relativní cestou ke zdrojům
MapiMessage msg = MapiMessage.load(sourceFileName);
HtmlSaveOptions htmlSaveOptions = new HtmlSaveOptions();
htmlSaveOptions.setResourceRenderingMode(ResourceRenderingMode.SaveToFile);
htmlSaveOptions.setUseRelativePathToResources(true);
msg.save("target.html", htmlSaveOptions);
V tomto případě budou zdroje uloženy ve složce [název html souboru].files, ve stejné cestě jako .html soubor, a HTML bude odkazovat na zdroje pomocí relativních cest.
Uložit s absolutní cestou ke zdrojům
MapiMessage msg = MapiMessage.load(sourceFileName);
HtmlSaveOptions htmlSaveOptions = new HtmlSaveOptions();
htmlSaveOptions.setResourceRenderingMode(ResourceRenderingMode.SaveToFile);
htmlSaveOptions.setUseRelativePathToResources(false);
msg.save("target.html", htmlSaveOptions);
Stejně jako v prvním případě budou zdroje uloženy ve výchozí složce [název html souboru].files, ale HTML bude odkazovat na zdroje pomocí absolutních cest.
Vlastní relativní cesta pomocí události 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);
Použitím ResourceHtmlRenderingHandler události můžete nastavit vlastní relativní nebo absolutní cesty pro zdroje. Při přizpůsobování cest pomocí ResourceHtmlRenderingHandler obslužná rutina události a protože UseRelativePathToResources je nastaveno na true, měli byste přiřadit relativní cestu k PathToResourceFile vlastnost pro zajištění správného odkazování.
Zachovat vlastní ikony ve zprávě při konverzi do HTML
Někdy zpráva obsahuje vložené přílohy, které se zobrazují jako ikony v těle zprávy. Takové zprávy mohou při konverzi do HTML způsobovat problémy, protože ikony se ztratí. Důvod je ten, že ikony příloh nejsou uloženy přímo ve zprávě.
Uživatel Aspose.Email může přizpůsobit ikony příloh při konverzi zprávy do HTML. K tomu slouží HtmlSaveOptions.ResourceHtmlRendering událost se používá k přizpůsobení vykreslování souborů zdrojů (například příloh) při ukládání e‑mailové zprávy jako HTML souboru. V níže uvedené ukázce kódu je obslužná rutina události použita k dynamickému nastavení cesty k souborům zdrojů (ikony) na základě typu obsahu přílohy. To umožňuje přizpůsobené vykreslování zdrojů ve výstupním HTML podle typu souboru.
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);
Nastavit čas a časové pásmo při ukládání EML jako HTML
Uživatelé Aspose.Email mohou nastavit formáty zobrazení času a časového pásma v HtmlSaveOptions. Třída HeadersFormattingOptions třída umožňuje určit možnosti formátování hlaviček při ukládání MailMessage do formátu MHTML nebo HTML. Následující metody třídy HtmlFormatOptions třída určuje pole, která se mají zobrazit ve výstupním souboru:
- RenderCalendarEvent - Indikuje, že text z kalendářové události by měl být zapsán do výstupního MHTML.
- RenderVCardInfo - Indikuje, že text z VCard AlternativeView by měl být zapsán do výstupního HTML.
Následující ukázka kódu ukazuje, jak nastavit čas a časové pásmo při ukládání EML do 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");
Ukládání jako HTML bez vkládání zdrojů
Ukládání zprávy jako šablona Outlooku (.oft)
Následující úryvek kódu vám ukazuje, jak uložit zprávu jako šablonu Outlooku (.oft) soubor.