Chargement et enregistrement des messages
Chargement et enregistrement des messages électroniques
Détecter un format de fichier
L’API Aspose.Email fournit la capacité de détecter le format du fichier de message fourni. Le DetectFileFormat méthode du FileFormatUtil la classe peut être utilisée pour cela. Les classes et méthodes suivantes peuvent être utilisées pour détecter le format du fichier chargé.
- FileFormatType Classe
- FileFormatInfo Classe
- FileFormatUtil Classe
- FileFormatUtil.detectFileFormat(Stream) Method
- FileFormatUtil.detectFileFormat(String) Method
L’extrait de code suivant vous montre comment détecter les formats de fichier.
Charger un message électronique
Pour charger un message avec des options de chargement spécifiques, Aspose.Email fournit le LoadOptions classe qui peut être utilisée comme suit :
Préserver le format du message incorporé lors du chargement
Enregistrer et convertir les messages électroniques
Aspose.Email facilite la conversion de tout type de message vers un autre format. Pour démontrer cette fonctionnalité, le code de cet article charge trois types de messages depuis le disque et les enregistre de nouveau dans d’autres formats. La classe de base SaveOptions et les classes EmlSaveOptions, MsgSaveOptions, MhtSaveOptions, HtmlSaveOptions pour des paramètres supplémentaires lors de l’enregistrement MailMessage peut être utilisé pour enregistrer des messages dans d’autres formats. L’article montre comment utiliser ces classes pour enregistrer un e‑mail d’exemple en tant que :
- format EML.
- Outlook MSG.
- format MHTML.
- format HTML.
Charger et enregistrer un message électronique
L’extrait de code suivant vous montre comment charger un message EML et l’enregistrer sur le disque dans le même format.
Charger et enregistrer un message électronique en préservant les limites originales
L’extrait de code suivant vous montre comment charger un EML et l’enregistrer en tant qu’EML en préservant les limites originales.
Enregistrement en EML en préservant les pièces jointes TNEF
L’extrait de code suivant vous montre comment enregistrer en EML en préservant les pièces jointes TNEF.
Enregistrer EML en MSG
L’extrait de code suivant vous montre comment charger un message EML et le convertir en MSG en utilisant l’option appropriée de SaveOptions.
Enregistrer EML en MSG avec dates préservées
Le MsgSaveOptions la classe vous permet d’enregistrer le message source en tant que fichier Outlook Message (MSG) en préservant les dates. L’extrait de code suivant vous montre comment enregistrer en MSG avec dates préservées.
Enregistrer EML en tant que MHTML
Différentes options de MHTML peuvent être utilisées pour obtenir les résultats souhaités. L’extrait de code suivant vous montre comment charger un message EML dans MailMessage et le convertir en MHTML avec une date de message dans le système 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);
}
Formater les en‑têtes MHT globalement lors de l’enregistrement depuis EML
Avec Aspose.Email, vous pouvez utiliser les options de formatage globales pour l’en‑tête Mht. Les options globales définissent le formatage commun d’un en‑tête Mht pour tous les MhtSaveOptions instances. Cette fonctionnalité est conçue pour éviter de définir le formatage pour chaque instance de MhtSaveOptions.
Utilisez les méthodes suivantes de la GlobalFormattingOptions classe et l’exemple de code ci‑dessous pour définir le formatage d’un en‑tête Mht :
- setPageHeaderFormat(String value) - PageHeaderFormat pour les instances de HeadersFormattingOptions si DefaultPageHeaderFormat n’est pas défini.
- setHeaderFormat(String value) - HeaderFormat pour les instances de HeadersFormattingOptions si DefaultHeaderFormat n’est pas défini.
- setBeforeHeadersFormat(String value) - BeforeHeadersFormat pour les instances de HeadersFormattingOptions si BeforeHeadersFormat n’est pas défini.
- setAfterHeadersFormat(String value) - AfterHeadersFormat pour les instances de HeadersFormattingOptions si AfterHeadersFormat n’est pas défini.
// saveOptions1 and saveOptions2 have the same mht header formatting
MhtSaveOptions saveOptions1 = new MhtSaveOptions();
MhtSaveOptions saveOptions2 = new MhtSaveOptions();
Convertir EML en MHTML avec des paramètres optionnels
Le MhtSaveOptions la classe fournit des options supplémentaires pour enregistrer des messages e‑mail au format MHTML. L’énumérateur MhtFormatOptions rend possible l’écriture d’informations e‑mail supplémentaires dans le MHTML de sortie. Les champs supplémentaires suivants peuvent être écrits :
- WriteHeader - écrire l’en‑tête e‑mail dans le fichier de sortie.
- WriteOutlineAttachments - écrire les pièces jointes de contour dans le fichier de sortie.
- WriteCompleteEmailAddress - écrire l’adresse e‑mail complète dans le fichier de sortie.
- NoEncodeCharacters - aucun encodage de transfert des caractères ne doit être utilisé.
- HideExtraPrintHeader - masquer l’en‑tête d’impression supplémentaire en haut du fichier de sortie.
- WriteCompleteToEmailAddress - écrire l’adresse e‑mail complète du destinataire dans le fichier de sortie.
- WriteCompleteFromEmailAddress - écrire l’adresse e‑mail complète de l’expéditeur dans le fichier de sortie.
- WriteCompleteCcEmailAddress - écrire les adresses e‑mail complètes de tout destinataire en copie carbone dans le fichier de sortie.
- WriteCompleteBccEmailAddress - écrire l’adresse e‑mail complète de tout destinataire en copie cachée dans le fichier de sortie.
- RenderCalendarEvent - écrire le texte de l’événement du calendrier dans le fichier de sortie.
- SkipByteOrderMarkInBody - écrire les octets du Byte Order Mark (BOM) dans le fichier de sortie.
- RenderVCardInfo - écrire le texte de la vue alternative VCard dans le fichier de sortie.
- DisplayOutlook - afficher l’en‑tête De.
- RenderTaskFields - écrit des champs de tâche spécifiques dans le fichier de sortie.
- Aucun - Aucun paramètre spécifié.
L’extrait de code suivant vous montre comment convertir des fichiers EML en MHTML avec des paramètres optionnels.
Rendre les événements du calendrier lors de la conversion en MHTML
Le MhtFormatOptions.RenderCalendarEvent rend les événements du calendrier dans le MTHML de sortie. L’extrait de code suivant vous montre comment rendre les événements du calendrier lors de la conversion en MHTML.
Exporter l’e‑mail vers MHT sans images intégrées
Exporter l’e‑mail en MHT avec un fuseau horaire personnalisé
MailMessage classe fournit le setTimeZoneOffset propriété permettant de définir un fuseau horaire personnalisé lors de l’exportation en MHT. L’extrait de code suivant vous montre comment exporter un e‑mail en MHT avec un fuseau horaire personnalisé.
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);
Exportation d’e‑mail en EML
L’extrait de code suivant vous montre comment exporter des e‑mails au format EML.
Enregistrer l’e‑mail en HTML
Le HtmlSaveOptions la classe vous permet d’exporter le corps du message au format HTML. L’extrait de code suivant vous montre comment enregistrer un message en HTML.
Enregistrer le message e‑mail en HTML avec un chemin relatif vers les ressources
Lors de l’exportation de messages e‑mail au format HTML, il est possible de choisir d’enregistrer les ressources des e‑mails avec des chemins relatifs. Cette fonctionnalité offre plus de flexibilité quant à la manière dont les ressources sont liées dans le fichier HTML de sortie, facilitant le partage et l’affichage des e‑mails enregistrés sur différents systèmes. Le HtmlSaveOptions.UseRelativePathToResources la propriété permet de sauvegarder les ressources avec des chemins relatifs. La valeur par défaut de la propriété est false (les ressources sont enregistrées avec des chemins absolus). Lorsqu’elle est définie sur true, les ressources sont enregistrées avec des chemins relatifs. Les fichiers HTML avec des chemins relatifs sont plus portables et peuvent être visualisés correctement quel que soit la structure de fichiers de l’environnement d’hébergement. Vous pouvez choisir entre des chemins absolus et relatifs selon les besoins. Vous pouvez définir des chemins personnalisés pour les ressources en utilisant le ResourceHtmlRenderingHandler événement.
Enregistrer avec le chemin relatif par défaut vers les ressources
MapiMessage msg = MapiMessage.load(sourceFileName);
HtmlSaveOptions htmlSaveOptions = new HtmlSaveOptions();
htmlSaveOptions.setResourceRenderingMode(ResourceRenderingMode.SaveToFile);
htmlSaveOptions.setUseRelativePathToResources(true);
msg.save("target.html", htmlSaveOptions);
Dans ce cas, les ressources seront enregistrées dans le dossier [nom du fichier html].files, au même emplacement que le fichier .html, et le HTML référencera les ressources via des chemins relatifs.
Enregistrer avec un chemin absolu vers les ressources
MapiMessage msg = MapiMessage.load(sourceFileName);
HtmlSaveOptions htmlSaveOptions = new HtmlSaveOptions();
htmlSaveOptions.setResourceRenderingMode(ResourceRenderingMode.SaveToFile);
htmlSaveOptions.setUseRelativePathToResources(false);
msg.save("target.html", htmlSaveOptions);
Comme dans le premier cas, les ressources seront enregistrées par défaut dans le dossier [nom du fichier html].files, mais le HTML référencera les ressources en utilisant des chemins absolus.
Chemin relatif personnalisé à l’aide de l’événement 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);
En utilisant le ResourceHtmlRenderingHandler événement, vous pouvez définir des chemins relatifs ou absolus personnalisés pour les ressources. Lors de la personnalisation des chemins avec le ResourceHtmlRenderingHandler gestionnaire d’événement, et puisque UseRelativePathToResources est définie sur true, vous devez attribuer un chemin relatif au PathToResourceFile propriété pour assurer une référence correcte.
Conserver les icônes personnalisées d’un message lors de la conversion en HTML
Parfois, le message contient des pièces jointes en ligne, qui sont affichées sous forme d’icônes dans le corps du message. De tels messages peuvent poser des problèmes lors de leur conversion en HTML, car les images d’icônes sont perdues. Cela s’explique par le fait que les icônes des pièces jointes ne sont pas stockées directement dans le message.
L’utilisateur d’Aspose.Email peut personnaliser les icônes des pièces jointes lors de la conversion du message en HTML. Pour cela, le HtmlSaveOptions.ResourceHtmlRendering l’événement est utilisé pour personnaliser le rendu des fichiers de ressources (tels que les pièces jointes) lors de l’enregistrement d’un message e‑mail sous forme de fichier HTML. Dans l’exemple de code ci‑dessous, le gestionnaire d’événement est utilisé pour définir dynamiquement le chemin vers les fichiers de ressources (icônes) en fonction du type de contenu de la pièce jointe. Cela permet un rendu personnalisé des ressources dans la sortie HTML selon leur type de fichier.
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);
Définir l’heure et le fuseau horaire lors de l’enregistrement d’un EML en HTML
Les utilisateurs d’Aspose.Email peuvent définir les formats d’affichage de l’heure et du fuseau horaire dans HtmlSaveOptions. Le HeadersFormattingOptions la classe permet de spécifier les options de mise en forme des en‑têtes lors de l’enregistrement d’un MailMessage au format Mhtml ou Html. Les méthodes suivantes de la HtmlFormatOptions la classe spécifie les champs à afficher dans le fichier de sortie :
- RenderCalendarEvent - Indique que le texte provenant de l’événement du calendrier doit être écrit dans le mhtml de sortie.
- RenderVCardInfo - Indique que le texte provenant de la vue alternative VCard doit être écrit dans le HTML de sortie.
L’exemple de code suivant montre comment définir l’heure et le fuseau horaire lors de l’enregistrement d’un EML en 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");
Enregistrement en HTML sans intégrer les ressources
Enregistrement d’un message en tant que modèle Outlook (.oft)
L’extrait de code suivant vous montre comment enregistrer un message sous forme de modèle Outlook (.oft).