Laddning och sparande av meddelanden
Laddning och sparande av e‑postmeddelanden
Upptäck ett filformat
Aspose.Email API erbjuder möjligheten att upptäcka filformatet för den angivna meddelandefilen. Den DetectFileFormat metod för FileFormatUtil klass kan användas för att uppnå detta. Följande klasser och metoder kan användas för att upptäcka det inlästa filformatet.
- FileFormatType Klass
- FileFormatInfo Klass
- FileFormatUtil Klass
- FileFormatUtil.detectFileFormat(Stream) Method
- FileFormatUtil.detectFileFormat(String) Method
Följande kodsnutt visar hur du upptäcker filformat.
Ladda ett e‑postmeddelande
För att ladda ett meddelande med specifika laddningsalternativ tillhandahåller Aspose.Email LoadOptions klass som kan användas på följande sätt:
Bevara inbäddat meddelandeformat under laddning
Spara och konvertera e‑postmeddelanden
Aspose.Email underlättar att konvertera vilken meddelandetyp som helst till ett annat format. För att demonstrera denna funktion laddar koden i denna artikel tre typer av meddelanden från disk och sparar dem tillbaka i andra format. Bas‑klassen SaveOptions och klasserna EmlSaveOptions, MsgSaveOptions, MhtSaveOptions, HtmlSaveOptions för ytterligare inställningar vid sparande MailMessage kan användas för att spara meddelanden i andra format. Artikeln visar hur man använder dessa klasser för att spara ett exempelmail som:
- EML-format.
- Outlook MSG.
- MHTML-format.
- HTML-format.
Ladda och spara ett e‑postmeddelande
Följande kodsnutt visar hur du laddar ett EML‑meddelande och sparar det på disken i samma format.
Ladda och spara ett e‑postmeddelande med bevarande av de ursprungliga gränserna
Följande kodsnutt visar hur du laddar EML och sparar som EML samtidigt som de ursprungliga gränserna bevaras.
Spara som EML med bevarande av TNEF-bilagor
Följande kodsnutt visar hur du sparar som EML och bevarar TNEF‑bilagor.
Spara EML till MSG
Följande kodsnutt visar hur du laddar ett EML‑meddelande och konverterar det till MSG med hjälp av lämpligt alternativ från SaveOptions.
Spara EML till MSG med bevarade datum
Den MsgSaveOptions klass låter dig spara källmeddelandet som en Outlook Message-fil (MSG) med bevarade datum. Följande kodsnutt visar hur du sparar som MSG med bevarade datum.
Spara EML som MHTML
Olika MHTML‑alternativ kan användas för att uppnå önskat resultat. Följande kodsnutt visar hur du laddar ett EML‑meddelande i MailMessage och konvertera den till MHTML med ett meddelandedatum i UTC-systemet.
// 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);
}
Formatera MHT‑huvuden globalt när du sparar från EML
Med Aspose.Email kan du använda de globala formateringsalternativen för MHT‑huvudet. De globala alternativen sätter den gemensamma formateringen av ett MHT‑huvud för alla MhtSaveOptions instanser. Denna funktion är utformad för att undvika att ställa in formatering för varje instans av MhtSaveOptions.
Använd följande metoder i GlobalFormattingOptions klass och kodexemplet nedan för att sätta formatering av ett MHT‑huvud:
- setPageHeaderFormat(String value) - PageHeaderFormat för instanser av HeadersFormattingOptions om DefaultPageHeaderFormat inte är satt.
- setHeaderFormat(String value) - HeaderFormat för instanser av HeadersFormattingOptions om DefaultHeaderFormat inte är satt.
- setBeforeHeadersFormat(String value) - BeforeHeadersFormat för instanser av HeadersFormattingOptions om BeforeHeadersFormat inte är satt.
- setAfterHeadersFormat(String value) - AfterHeadersFormat för instanser av HeadersFormattingOptions om AfterHeadersFormat inte är satt.
// saveOptions1 and saveOptions2 have the same mht header formatting
MhtSaveOptions saveOptions1 = new MhtSaveOptions();
MhtSaveOptions saveOptions2 = new MhtSaveOptions();
Konvertera EML till MHTML med valfria inställningar
Den MhtSaveOptions klass erbjuder ytterligare alternativ för att spara e‑postmeddelanden i MHTML-format. Enumerationen MhtFormatOptions gör det möjligt att skriva ytterligare e‑postinformation till MHTML-utdata. Följande extra fält kan skrivas:
- WriteHeader - skriver e‑posthuvudet till utlustringsfilen.
- WriteOutlineAttachments - skriver outline‑bilagor till utlustringsfilen.
- WriteCompleteEmailAddress - skriver den kompletta e‑postadressen till utlustringsfilen.
- NoEncodeCharacters - ingen teckenöverföringskodning bör användas.
- HideExtraPrintHeader - döljer extra utskriftsrubrik högst upp i utlustringsfilen.
- WriteCompleteToEmailAddress - skriver den kompletta mottagarens e‑postadress till utlustringsfilen.
- WriteCompleteFromEmailAddress - skriver den kompletta avsändarens e‑postadress till utlustringsfilen.
- WriteCompleteCcEmailAddress - skriver de kompletta e‑postadresserna för eventuella carbon-copied-mottagare till utlustringsfilen.
- WriteCompleteBccEmailAddress - skriver den kompletta e‑postadressen för eventuella blind carbon-copied-mottagare till utlustringsfilen.
- RenderCalendarEvent - skriver text från kalenderhändelsen till utlustringsfilen.
- SkipByteOrderMarkInBody - skriver Byte Order Mark (BOM)-byte till utlustringsfilen.
- RenderVCardInfo - skriver text från VCard AlternativeView till utlustringsfilen.
- DisplayAsOutlook - visar Från‑rubriken.
- RenderTaskFields - skriver specifika uppgiftsfält till utlustringsfilen.
- Ingen - Ingen inställning specificerad.
Följande kodsnutt visar hur du konverterar EML-filer till MHTML med valfria inställningar.
Rendera kalenderhändelser vid konvertering till MHTML
Den MhtFormatOptions.RenderCalendarEvent renderar kalenderhändelserna till MHTML-utdata. Följande kodsnutt visar hur du renderar kalenderhändelser medan du konverterar till MHTML.
Exportera e‑post till MHT utan inbäddade bilder
Exportera e‑post till MHT med anpassad tidszon
MailMessage klass tillhandahåller setTimeZoneOffset egenskap för att ställa in anpassad tidszon vid export till MHT. Följande kodsnutt visar hur du exporterar e‑post till MHT med anpassad tidszon.
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);
Exportera e‑post till EML
Följande kodsnutt visar hur du exporterar e‑post till EML.
Spara e‑post som HTML
Den HtmlSaveOptions klass som låter dig exportera meddelandekroppen till HTML. Följande kodsnutt visar hur du sparar ett meddelande som HTML.
Spara e‑postmeddelande som HTML med relativ sökväg till resurser
När e‑postmeddelanden exporteras till HTML‑format kan du välja att spara e‑postresurser med relativa sökvägar. Denna funktion ger större flexibilitet i hur resurser länkas i den färdiga HTML‑filen, vilket underlättar delning och visning av sparade e‑postmeddelanden på olika system. Den HtmlSaveOptions.UseRelativePathToResources egenskap ger möjlighet att spara resurser med relativa sökvägar. Standardvärdet för egenskapen är false (resurser sparas med absoluta sökvägar). När den sätts till true sparas resurser med relativa sökvägar. HTML‑filer med relativa sökvägar är mer portabla och kan visas korrekt oavsett filstruktur i den miljö de hostas i. Du kan välja mellan absoluta och relativa sökvägar beroende på kraven. Du kan definiera anpassade sökvägar för resurser med hjälp av ResourceHtmlRenderingHandler händelse.
Spara med standard relativ sökväg till resurser
MapiMessage msg = MapiMessage.load(sourceFileName);
HtmlSaveOptions htmlSaveOptions = new HtmlSaveOptions();
htmlSaveOptions.setResourceRenderingMode(ResourceRenderingMode.SaveToFile);
htmlSaveOptions.setUseRelativePathToResources(true);
msg.save("target.html", htmlSaveOptions);
I detta fall sparas resurser i mappen [html filnamn].files, i samma sökväg som .html‑filen och HTML‑filen refererar till resurserna via relativa sökvägar.
Spara med absolut sökväg till resurser
MapiMessage msg = MapiMessage.load(sourceFileName);
HtmlSaveOptions htmlSaveOptions = new HtmlSaveOptions();
htmlSaveOptions.setResourceRenderingMode(ResourceRenderingMode.SaveToFile);
htmlSaveOptions.setUseRelativePathToResources(false);
msg.save("target.html", htmlSaveOptions);
Som i det första fallet sparas resurser som standard i mappen [html filnamn].files, men HTML‑filen refererar till resurserna med absoluta sökvägar.
Anpassad relativ sökväg med ResourceHtmlRenderingHandler‑händelse
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);
Genom att använda ResourceHtmlRenderingHandler händelse kan du ange anpassade relativa eller absoluta sökvägar för resurser. När du anpassar sökvägar med ResourceHtmlRenderingHandler händelsehanterare, och eftersom UseRelativePathToResources är satt till true, bör du tilldela en relativ sökväg till PathToResourceFile egenskap för att säkerställa korrekt referens.
Bevara anpassade ikoner i ett meddelande vid konvertering till HTML
Ibland innehåller meddelandet inbäddade bilagor som visas som ikonbilder i meddelandetexten. Sådana meddelanden kan orsaka problem vid konvertering till HTML, eftersom ikonbilderna går förlorade. Detta beror på att bilagornas ikoner inte lagras direkt i meddelandet.
Användaren av Aspose.Email kan anpassa ikonerna för bilagor när meddelandet konverteras till HTML. För det behövs HtmlSaveOptions.ResourceHtmlRendering händelse som används för att anpassa återgivning av resurser (såsom bilagor) när ett e‑postmeddelande sparas som en HTML‑fil. I kodexemplet nedan används händelsehanteraren för att dynamiskt sätta sökvägen till resursfiler (ikoner) baserat på bilagans innehållstyp. Detta möjliggör anpassad återgivning av resurser i HTML‑utdata baserat på deras filtyp.
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);
Ställ in tid och tidszon när du sparar EML som HTML
Aspose.Email‑användare kan ställa in format för tid och tidszon i HtmlSaveOptions. Klassen HeadersFormattingOptions klass som låter dig specificera formateringsalternativ för rubriker när du sparar MailMessage till MHTML‑ eller HTML‑format. Följande metoder i HtmlFormatOptions klass som specificerar fälten som ska visas i utdatafilen:
- RenderCalendarEvent - Anger att text från kalenderhändelse ska skrivas i utdata‑MHTML.
- RenderVCardInfo - Anger att text från VCard AlternativeView ska skrivas i utdata‑HTML.
Följande kodexempel visar hur du ställer in tid och tidszon när du sparar EML som 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");
Spara som HTML utan inbäddade resurser
Spara ett meddelande som en Outlook‑mall (.oft) fil
Följande kodsnutt visar hur du sparar ett meddelande som en Outlook‑mall (.oft) fil.