Gestion des messages Outlook
Enregistrer les e‑mails en HTML
Aspose.Email permet d’enregistrer les ressources d’e‑mail avec des chemins relatifs lors de l’exportation de messages au format HTML. Cette fonctionnalité offre plus de flexibilité quant à la façon dont les ressources sont liées dans le fichier HTML de sortie, facilitant le partage et l’affichage des e‑mails sauvegardés sur différents systèmes. Pour enregistrer les ressources avec des chemins relatifs, utilisez HtmlSaveOptions.UseRelativePathToResources propriété. 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 à true, les ressources sont enregistrées avec des chemins relatifs.
Les fichiers HTML avec des chemins relatifs sont plus portables et peuvent être affiché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 la ResourceHtmlRendering événement.
L’exemple de code suivant montre comment enregistrer un e‑mail avec le chemin relatif par défaut vers les ressources :
var msg = MapiMessage.Load(sourceFileName);
var htmlSaveOptions = new HtmlSaveOptions
{
ResourceRenderingMode = ResourceRenderingMode.SaveToFile,
UseRelativePathToResources = true
};
msg.Save(Path.Combine("target_files"), htmlSaveOptions);
Dans ce cas, les ressources seront enregistrées dans le dossier [nom du fichier html]_files, au même endroit que le fichier .html, et le HTML référencera les ressources via des chemins relatifs.
L’exemple de code ci‑dessus montre comment enregistrer avec un chemin absolu vers les ressources :
var msg = MapiMessage.Load(sourceFileName);
var htmlSaveOptions = new HtmlSaveOptions
{
ResourceRenderingMode = ResourceRenderingMode.SaveToFile,
UseRelativePathToResources = false
};
msg.Save(Path.Combine("target_files"), htmlSaveOptions);
Comme dans le premier cas, les ressources seront enregistrées dans le dossier [nom du fichier html]_files par défaut, mais le HTML référencera les ressources en utilisant des chemins absolus.
En utilisant le ResourceHtmlRendering événement, vous pouvez définir des chemins relatifs ou absolus personnalisés pour les ressources. Lors de la personnalisation des chemins avec le ResourceHtmlRendering 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.
L’exemple de code suivant montre comment personnaliser le chemin relatif en utilisant l’événement ResourceHtmlRendering
var msg = MapiMessage.Load(sourceFileName);
var htmlSaveOptions = new HtmlSaveOptions
{
ResourceRenderingMode = ResourceRenderingMode.SaveToFile,
UseRelativePathToResources = true
};
htmlSaveOptions.ResourceHtmlRendering += (o, args) =>
{
if (o is AttachmentBase attachment)
{
// Since UseRelativePathToResources = true, you should assign a relative path to the PathToResourceFile property.
args.PathToResourceFile = $@"images\{attachment.ContentType.Name}";
}
};
msg.Save(Path.Combine(targetPath, "A Day in the Park.html"), htmlSaveOptions);
Convertir MSG en messages MIME
L’API Aspose.Email permet de convertir les fichiers MSG en messages MIME à l’aide du ToMailMessage méthode.
Définir les délais d’attente pour la conversion et le chargement des messages
Les fonctionnalités suivantes vous permettront de définir le délai d’attente en millisecondes pour le processus de conversion et de chargement :
-
MailConversionOptions.Timeout propriété - Limite le temps en millisecondes lors de la conversion d’un message.
-
MailConversionOptions.TimeoutReached - Levée si le délai est dépassé lors de la conversion en MailMessage.
-
MsgLoadOptions.Timeout - Limite le temps en millisecondes lors de la conversion d’un message.
-
MsgLoadOptions.TimeoutReached - Levée si le délai est dépassé lors de la conversion en MailMessage.
L’exemple de code ci‑dessus vous montrera comment définir un délai d’attente lors de la conversion d’un message :
var options = new MailConversionOptions();
// Set the timeout to 5 seconds
options.Timeout = 5000;
options.TimeoutReached += (object sender, EventArgs args) =>
{
string subj = (sender as MailMessage).Subject;
// Set a flag indicating the timeout was reached
isTimedOut = true;
};
var mailMessage = mapiMessage.ToMailMessage(options);
Conversion de MSG en EML en conservant le corps RTF
La conversion d’un fichier MSG en EML en conservant le corps RTF peut être réalisée de deux manières :
-
en utilisant MsgLoadOptions.PreserveRtfContent propriété du MsgLoadOptions class;
-
en utilisant MailConversionOptions.PreserveRtfContent propriété du MailConversionOptions class;
Les deux propriétés obtiennent ou définissent une valeur indiquant s’il faut conserver le corps RTF dans MailMessage.
Les extraits de code suivants montrent comment convertir un fichier MSG en EML tout en préservant le corps RTF :
var loadOptions = new MsgLoadOptions
{
PreserveRtfContent = true
};
var eml = MailMessage.Load("my.msg", loadOptions);
var conversionOptions = new MailConversionOptions
{
PreserveRtfContent = true
};
var msg = MapiMessage.Load("my.msg");
var eml = msg.ToMailMessage(conversionOptions);
Gestion des fichiers de modèle Outlook (.OFT)
Les modèles Outlook sont très utiles lorsque vous devez envoyer à plusieurs reprises le même courriel. Au lieu de préparer le message à chaque fois, créez‑le d’abord dans Outlook et enregistrez‑le comme modèle Outlook (OFT). Par la suite, chaque fois que vous devez envoyer le message, vous pouvez le créer à partir du modèle, gagnant ainsi du temps d’écriture du même texte dans le corps ou l’objet, de mise en forme, etc. Aspose.Email’s MailMessage classe peut être utilisée pour charger et lire un fichier modèle Outlook (OFT). Une fois le modèle Outlook chargé dans une instance de la MailMessage classe, vous pouvez mettre à jour l’expéditeur, le destinataire, le corps, le sujet et d’autres propriétés. Après la mise à jour des propriétés :
- Envoyer l’email en utilisant le SmtpClient classe ou
- Enregistrer le message au format MSG et effectuer d’autres mises à jour/validations avec Microsoft Outlook.
Dans les exemples de code ci‑dessus, nous :
- Charger le modèle en utilisant le MailMessage classe.
- Mettre à jour certaines propriétés.
- Enregistrer le message au format MSG.
L’extrait de code suivant montre comment charger le fichier OFT, mettre à jour le message et l’enregistrer au format MSG.
Enregistrer les fichiers MSG comme modèles
Le fragment de code suivant vous montre comment enregistrer le fichier Outlook MSG en tant que modèle.
Déterminer le type de message MAPI (OFT ou MSG)
Lors du chargement d’un objet MapiMessage à partir d’un fichier, il peut être nécessaire de déterminer si le message chargé est un fichier modèle ou un fichier de courriel ordinaire. En utilisant le IsTemplate propriété du MapiMessage classe, vous pouvez détecter avec précision si un courriel est un modèle ou non. Cette fonctionnalité peut être précieuse lors de la gestion et du traitement de différents types de fichiers de courriels au sein des applications et des systèmes.
L’exemple de code ci‑dessous montre comment déterminer si un MapiMessage est OFT ou MSG :
var msg = MapiMessage.Load("message.msg");
var isOft = msg.IsTemplate; // returns false
var msg = MapiMessage.Load("message.oft");
var isOft = msg.IsTemplate; // returns true
Enregistrer MapiMessage ou MailMessage au format OFT
Le SaveOptions la classe vous permet de spécifier des options supplémentaires lors de l’enregistrement d’un MailMessage ou d’un MapiMessage dans un format particulier.
L’exemple de code suivant montre comment enregistrer un message au format OFT :
// Save the MailMessage to OFT format
using (var eml = MailMessage.Load("message.eml"))
{
eml.Save("message.oft", SaveOptions.DefaultOft);
// or alternative way #2
var saveOptions = new MsgSaveOptions(MailMessageSaveType.OutlookTemplateFormat);
eml.Save("message.oft", saveOptions);
// or alternative way #3
saveOptions = SaveOptions.CreateSaveOptions(MailMessageSaveType.OutlookTemplateFormat);
eml.Save("message.oft", saveOptions);
}
// Save the MapiMessage to OFT format
using (var msg = MapiMessage.Load("message.msg"))
{
msg.Save("message.oft", SaveOptions.DefaultOft);
// or alternative way #2
var saveOptions = new MsgSaveOptions(MailMessageSaveType.OutlookTemplateFormat);
msg.Save("message.oft", saveOptions);
// or alternative way #3
saveOptions = SaveOptions.CreateSaveOptions(MailMessageSaveType.OutlookTemplateFormat);
msg.Save("message.oft", saveOptions);
}
Gestion des messages signés numériquement
Aspose.Email implémente l’algorithme complet de l’objet e‑mail S/MIME. Cela confère à l’API le pouvoir complet de préserver les signatures numériques lors de la conversion de messages entre différents formats.
Conserver la signature lors de la conversion EML vers MSG
Aspose.Email conserve la signature numérique lors de la conversion de EML en MSG. Le fragment de code suivant vous montre comment convertir de EML en MSG.
Convertir les messages S/MIME de MSG en EML
Aspose.Email conserve la signature numérique lors de la conversion de MSG en EML comme montré dans le fragment de code suivant.
Vérifier les signatures des courriels sécurisés
Les fonctionnalités suivantes sont disponibles pour vérifier la signature des objets MapiMessage.
- SecureEmailManager classe pour vérifier la signature des courriels sécurisés.
- SmimeResult classe pour stocker les résultats de la vérification.
- SecureEmailManager.CheckSignature(MapiMessage msg) méthode.
- SecureEmailManager.CheckSignature(MapiMessage msg, X509Certificate2 certificateForDecrypt) méthode.
- SecureEmailManager.CheckSignature(MapiMessage msg, X509Certificate2 certificateForDecrypt, X509Store store) méthode.
L’exemple de code ci‑dessous montre comment mettre en œuvre les fonctionnalités dans votre projet :
var msg = MapiMessage.Load(fileName, new EmlLoadOptions());
var result = new SecureEmailManager().CheckSignature(msg);
var certFileName = "cert.pfx";
var cert = new X509Certificate2(certFileName, "pass");
var eml = MapiMessage.Load(fileName);
var store = new X509Store();
store.Open(OpenFlags.ReadWrite);
store.Add(cert);
store.Close();
var result = new SecureEmailManager().CheckSignature(eml, cert, store);
Supprimer les signatures des MapiMessages
Pour une meilleure compatibilité, le MapiMessage.RemoveSignature méthode et MapiMessage.IsSigned les propriétés sont utilisées pour supprimer une signature numérique d’un message.
Le fragment de code suivant montre comment implémenter ces fonctionnalités dans votre projet :
var msg = MapiMessage.Load(fileName);
if (msg.IsSigned)
{
var unsignedMsg = msg.RemoveSignature();
}
Déchiffrer les MapiMessages avec des certificats
Si vous avez des messages MAPI chiffrés et devez les déchiffrer en utilisant la clé privée stockée dans un certificat, les fonctionnalités suivantes d’Aspose.Email peuvent être utiles :
- MapiMessage.IsEncrypted - Obtient une valeur indiquant si le message est chiffré.
- MapiMessage.Decrypt() - Déchiffre ce message (la méthode recherche dans les magasins My de l’utilisateur et de l’ordinateur le certificat et la clé privée appropriés).
- MapiMessage.Decrypt(X509Certificate2 certificate) - Déchiffre ce message avec le certificat.
Le fragment de code suivant montre comment travailler avec des messages MAPI chiffrés :
var privateCert = new X509Certificate2(privateCertFile, "password");
var msg = MapiMessage.Load("encrypted.msg");
if (msg.IsEncrypted);
{
var decryptedMsg = msg.Decrypt(privateCert);
}
Définir les catégories de couleur pour les fichiers MSG
Une catégorie de couleur indique une certaine importance ou classification d’un email. Microsoft Outlook permet aux utilisateurs d’attribuer des catégories de couleur pour différencier les courriels. Pour gérer la catégorie de couleur, utilisez le FollowUpManager. Il contient des fonctions telles que AddCategory, RemoveCategory, ClearCategories et GetCategories.
- AddCategory prend MapiMessage et la chaîne de catégorie de couleur, par exemple « Purple Category » ou « Red Category », comme arguments.
- RemoveCategory prend MapiMessage et la chaîne de catégorie de couleur à supprimer du message.
- ClearCategories est utilisé pour supprimer toutes les catégories de couleur du message.
- GetCategories est utilisé pour récupérer toutes les catégories de couleur d’un message particulier.
L’exemple suivant exécute les tâches indiquées ci‑dessous :
- Ajouter une catégorie de couleur.
- Ajouter une autre catégorie de couleur.
- Récupérer la liste de toutes les catégories.
- Supprimer toutes les catégories.
Accéder aux informations de suivi dans les fichiers MSG
L’API Aspose.Email permet d’accéder aux informations de suivi d’un message envoyé ou reçu. Elle peut récupérer les informations de lecture, d’accusé de réception et les résultats de vote à partir d’un fichier de message.
Récupérer les informations de confirmation de lecture et de remise
Le fragment de code suivant vous montre comment récupérer les informations de lecture et d’accusé de réception.
Créer des messages de transfert et de réponse
L’API Aspose.Email permet de créer et de formater les messages de transfert et de réponse. Le ReplyMessageBuilder et ForwardMessageBuilder les classes de l’API sont utilisées pour créer respectivement les messages Reply et Forward. Un message Reply ou Forward peut être spécifié pour être créé en utilisant l’un des modes de OriginalMessageAdditionMode énumération. Cette énumération possède les valeurs suivantes :
- OriginalMessageAdditionMode.None – Le message original n’est pas inclus dans le message de réponse.
- OriginalMessageAdditionMode.Attachment – Le message original est inclus en tant que pièce jointe dans le message de réponse
- OriginalMessageAdditionMode.Textpart - Le message original est inclus en texte dans le corps du message de réponse
Créer des messages de réponse
Le fragment de code suivant vous montre comment créer un message de réponse.
Créer des messages de transfert
L’extrait de code suivant montre comment créer un message de transfert.