Berichten laden en opslaan
E‑mailberichten laden en opslaan
Detecteer een bestandsformaat
Aspose.Email API biedt de mogelijkheid om het bestandsformaat van het geleverde berichtbestand te detecteren. De DetectFileFormat methode van de FileFormatUtil klasse kan hiervoor worden gebruikt. De volgende klassen en methoden kunnen worden gebruikt om het geladen bestandsformaat te detecteren.
- FileFormatType Klasse
- FileFormatInfo Klasse
- FileFormatUtil Klasse
- FileFormatUtil.detectFileFormat(Stream) Method
- FileFormatUtil.detectFileFormat(String) Method
Het volgende codefragment laat zien hoe je bestandsformaten kunt detecteren.
Laad een e‑mailbericht
Om een bericht te laden met specifieke laadopties, biedt Aspose.Email de LoadOptions klasse die als volgt kan worden gebruikt:
Behoud ingesloten berichtformaat tijdens het laden
Opslaan en converteren van e‑mailberichten
Aspose.Email maakt het eenvoudig om elk berichttype naar een ander formaat te converteren. Om deze functie te demonstreren, laadt de code in dit artikel drie soorten berichten van de schijf en slaat ze op in andere formaten. De basisklasse SaveOptions en de klassen EmlSaveOptions, MsgSaveOptions, MhtSaveOptions, HtmlSaveOptions voor extra instellingen bij het opslaan MailMessage kan worden gebruikt om berichten op te slaan naar andere formaten. Het artikel laat zien hoe je deze klassen gebruikt om een voorbeeld‑e‑mail op te slaan als:
- EML‑formaat.
- Outlook MSG.
- MHTML‑formaat.
- HTML‑formaat.
Laad en sla een e‑mailbericht op
Het volgende codefragment toont hoe je een EML‑bericht kunt laden en het op schijf opslaat in hetzelfde formaat.
Laad en sla een e‑mailbericht op met behoud van de oorspronkelijke grenzen
Het volgende codefragment toont hoe je EML laadt en opslaat als EML waarbij de oorspronkelijke grenzen behouden blijven.
Opslaan als EML met behoud van TNEF‑bijlagen
Het volgende codefragment toont hoe je opslaat als EML met behoud van TNEF‑bijlagen.
Sla EML op als MSG
Het volgende codefragment toont hoe je een EML‑bericht laadt en converteert naar MSG met behulp van de juiste optie uit SaveOptions.
Sla EML op als MSG met bewaarde datums
De MsgSaveOptions klasse stelt je in staat om het bronbericht op te slaan als een Outlook‑berichtbestand (MSG) met behoud van datums. Het volgende codefragment laat zien hoe je opslaat als MSG met bewaarde datums.
Sla EML op als MHTML
Verschillende MHTML‑opties kunnen worden gebruikt om het gewenste resultaat te bereiken. Het volgende codefragment toont hoe je een EML‑bericht laadt in MailMessage en converteer het naar MHTML met een berichtdatum in het UTC‑systeem.
// 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);
}
Formateer MHT‑headers globaal bij het opslaan vanuit EML
Met Aspose.Email kun je de globale opmaakopties voor de MHT‑header gebruiken. De globale opties stellen de gemeenschappelijke opmaak van een MHT‑header in voor alle MhtSaveOptions instanties. Deze functie is ontworpen om het instellen van opmaak voor elke instantie van MhtSaveOptions.
Gebruik de volgende methoden van de GlobalFormattingOptions klasse en het onderstaande codevoorbeeld om de opmaak van een MHT‑header in te stellen:
- setPageHeaderFormat(String value) - PageHeaderFormat voor instanties van HeadersFormattingOptions als DefaultPageHeaderFormat niet is ingesteld.
- setHeaderFormat(String value) - HeaderFormat voor instanties van HeadersFormattingOptions als DefaultHeaderFormat niet is ingesteld.
- setBeforeHeadersFormat(String value) - BeforeHeadersFormat voor instanties van HeadersFormattingOptions als BeforeHeadersFormat niet is ingesteld.
- setAfterHeadersFormat(String value) - AfterHeadersFormat voor instanties van HeadersFormattingOptions als AfterHeadersFormat niet is ingesteld.
// saveOptions1 and saveOptions2 have the same mht header formatting
MhtSaveOptions saveOptions1 = new MhtSaveOptions();
MhtSaveOptions saveOptions2 = new MhtSaveOptions();
Converteer EML naar MHTML met optionele instellingen
De MhtSaveOptions klasse biedt extra opties voor het opslaan van e‑mailberichten in MHTML‑formaat. De enumerator MhtFormatOptions maakt het mogelijk om extra e‑mailinformatie naar het uitvoer‑MHTML te schrijven. De volgende extra velden kunnen worden geschreven:
- WriteHeader - schrijft de e‑mailheader naar het uitvoerbestand.
- WriteOutlineAttachments - schrijft outline‑bijlagen naar het uitvoerbestand.
- WriteCompleteEmailAddress - schrijft het volledige e‑mailadres naar het uitvoerbestand.
- NoEncodeCharacters - er mogen geen karakter‑overdrachtsencoderingen worden gebruikt.
- HideExtraPrintHeader - verbergt extra afdrukheader bovenaan het uitvoerbestand.
- WriteCompleteToEmailAddress - schrijft het volledige e‑mailadres van de ontvanger naar het uitvoerbestand.
- WriteCompleteFromEmailAddress - schrijft het volledige e‑mailadres van de afzender naar het uitvoerbestand.
- WriteCompleteCcEmailAddress - schrijft de volledige e‑mailadressen van alle CC‑ontvangers naar het uitvoerbestand.
- WriteCompleteBccEmailAddress - schrijft het volledige e‑mailadres van alle BCC‑ontvangers naar het uitvoerbestand.
- RenderCalendarEvent - schrijft tekst van het agenda‑event naar het uitvoerbestand.
- SkipByteOrderMarkInBody - schrijft Byte Order Mark (BOM)-bytes naar het uitvoerbestand.
- RenderVCardInfo - schrijft tekst van VCard AlternativeView naar het uitvoerbestand.
- DisplayAsOutlook - toont From‑header.
- RenderTaskFields - schrijft specifieke taakvelden naar het uitvoerbestand.
- Geen - Geen instellingen gespecificeerd.
Het volgende codefragment toont hoe je EML‑bestanden converteert naar MHTML met optionele instellingen.
Rendeer agenda‑events tijdens conversie naar MHTML
De MhtFormatOptions.RenderCalendarEvent rendert de agenda‑events naar de uitvoer‑MHTML. Het volgende codefragment toont hoe je agenda‑events rendert tijdens het converteren naar MHTML.
Exporteer e‑mail naar MHT zonder inline‑afbeeldingen
E‑mail exporteren naar MHT met aangepaste tijdzone
MailMessage class biedt de setTimeZoneOffset eigenschap om een aangepaste tijdzone in te stellen bij het exporteren naar MHT. Het volgende codefragment toont hoe u e‑mail kunt exporteren naar MHT met een aangepaste tijdzone.
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);
E‑mail exporteren naar EML
De volgende codefragment toont hoe u e‑mails kunt exporteren naar EML.
E‑mail opslaan als HTML
De HtmlSaveOptions klasse waarmee u de berichtinhoud kunt exporteren naar HTML. Het volgende codefragment toont hoe u een bericht kunt opslaan als HTML.
E‑mailbericht opslaan als HTML met relatief pad naar bronnen
Bij het exporteren van e‑mailberichten naar HTML‑formaat kunt u kiezen om e‑mailbronnen op te slaan met relatieve paden. Deze functie biedt meer flexibiliteit in hoe bronnen worden gekoppeld in het uitvoer‑HTML‑bestand, waardoor het eenvoudiger wordt om opgeslagen e‑mails te delen en weer te geven op verschillende systemen. De HtmlSaveOptions.UseRelativePathToResources eigenschap biedt de mogelijkheid om bronnen op te slaan met relatieve paden. Standaardwaarde is false (bronnen worden opgeslagen met absolute paden). Wanneer true, worden bronnen opgeslagen met relatieve paden. HTML‑bestanden met relatieve paden zijn draagbaarder en kunnen correct worden bekeken, ongeacht de bestandsstructuur van de hostingomgeving. U kunt kiezen tussen absolute en relatieve paden op basis van de vereisten. U kunt aangepaste paden voor bronnen definiëren met de ResourceHtmlRenderingHandler event.
Opslaan met standaard relatief pad naar bronnen
MapiMessage msg = MapiMessage.load(sourceFileName);
HtmlSaveOptions htmlSaveOptions = new HtmlSaveOptions();
htmlSaveOptions.setResourceRenderingMode(ResourceRenderingMode.SaveToFile);
htmlSaveOptions.setUseRelativePathToResources(true);
msg.save("target.html", htmlSaveOptions);
In dit geval worden bronnen opgeslagen in de map [html‑bestandsnaam].files, op hetzelfde pad als het .html‑bestand, en de HTML verwijst naar de bronnen via relatieve paden.
Opslaan met absoluut pad naar bronnen
MapiMessage msg = MapiMessage.load(sourceFileName);
HtmlSaveOptions htmlSaveOptions = new HtmlSaveOptions();
htmlSaveOptions.setResourceRenderingMode(ResourceRenderingMode.SaveToFile);
htmlSaveOptions.setUseRelativePathToResources(false);
msg.save("target.html", htmlSaveOptions);
Zoals in het eerste geval, worden bronnen standaard opgeslagen in de map [html‑bestandsnaam].files, maar de HTML verwijst naar de bronnen met absolute paden.
Aangepast relatief pad met ResourceHtmlRenderingHandler‑event
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);
Door gebruik te maken van de ResourceHtmlRenderingHandler event kunt u aangepaste relatieve of absolute paden voor bronnen instellen. Bij het aanpassen van paden met de ResourceHtmlRenderingHandler event‑handler, en aangezien UseRelativePathToResources is true ingesteld, moet u een relatief pad toewijzen aan de PathToResourceFile eigenschap om correcte verwijzingen te waarborgen.
Aangepaste pictogrammen behouden in een bericht bij conversie naar HTML
Soms bevat het bericht inline‑bijlagen die als pictogrammen in de berichttekst worden weergegeven. Dergelijke berichten kunnen problemen veroorzaken bij conversie naar HTML, omdat de pictogrammen verloren gaan. Dit komt doordat de pictogrammen van bijlagen niet rechtstreeks in het bericht zijn opgeslagen.
De gebruiker van Aspose.Email kan de pictogrammen voor bijlagen aanpassen bij het converteren van het bericht naar HTML. Hiervoor HtmlSaveOptions.ResourceHtmlRendering event wordt gebruikt om de weergave van bronbestanden (zoals bijlagen) aan te passen bij het opslaan van een e‑mailbericht als HTML‑bestand. In het onderstaande codevoorbeeld wordt de event‑handler gebruikt om dynamisch het pad naar bronbestanden (pictogrammen) in te stellen op basis van het content‑type van de bijlage. Dit maakt aangepaste weergave van bronnen in de HTML‑output mogelijk, afhankelijk van hun bestandstype.
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);
Tijd en tijdzone instellen bij het opslaan van EML als HTML
Aspose.Email‑gebruikers kunnen de weergaveformaten voor tijd en tijdzone instellen in HtmlSaveOptions. De HeadersFormattingOptions klasse waarmee u opties voor header‑opmaak kunt specificeren bij het opslaan van MailMessage naar MHTML of HTML. De volgende methoden van de HtmlFormatOptions klasse die de velden specificeert die in het uitvoerbestand moeten worden weergegeven:
- RenderCalendarEvent - Geeft aan dat tekst van een agenda‑event moet worden geschreven in de uitvoer‑MHTML.
- RenderVCardInfo - Geeft aan dat tekst van VCard AlternativeView moet worden geschreven in de uitvoer‑HTML.
Het volgende codevoorbeeld toont hoe u tijd en tijdzone instelt bij het opslaan van EML naar 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");
Opslaan als HTML zonder ingesloten bronnen
Opslaan van een bericht als Outlook‑template (.oft) bestand
Het volgende codefragment toont hoe u een bericht opslaat als een Outlook‑template (.oft) bestand.