Gestion des fichiers de messages avec Aspose.Email.Outlook

Conversion de MSG en message MIME

L’API Aspose.Email permet de convertir les fichiers MSG en messages MIME à l’aide du toMailMessage méthode.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
MapiMessage msg = new MapiMessage(
                            "sender@test.com",
                            "recipient1@test.com; recipient2@test.com",
                            "Test Subject",
                            "This is a body of message.");
MailConversionOptions options = new MailConversionOptions();
options.setConvertAsTnef(true);
MailMessage mail = msg.toMailMessage(options);

Conversion de MSG en EML en préservant le corps RTF

L’API fournit les méthodes suivantes pour préserver le corps RTF lors de la conversion de MSG en EML :

Les exemples de code suivants démontrent comment conserver le corps RTF dans MailMessage :

MsgLoadOptions options = new MsgLoadOptions();
options.setPreserveRtfContent(true);
MailMessage message = MailMessage.load("fileName", options);
MapiMessage mapi = MapiMessage.load("fileName");
MailConversionOptions options = new MailConversionOptions();
options.setPreserveRtfContent(true);
MailMessage message = mapi.toMailMessage(options);

Conversion de MSG en MHTML en préservant l’en‑tête de catégorie

L’API Aspose.Email offre la possibilité d’ajouter un en‑tête de catégorie lors de la conversion d’un message en MHTML. Cette fonctionnalité est spécifiée par le MhtSaveOptions classe comme option supplémentaire lors de l’enregistrement d’un MailMessage au format Mhtml.

L’exemple de code suivant montre comment créer un fichier MHT (MHTML) à partir d’un objet MapiMessage, personnaliser la mise en forme et les en‑têtes du fichier MHT à l’aide de MhtSaveOptions, définir des catégories pour le message électronique, puis modifier les modèles de format et les en‑têtes de rendu du fichier MHT avant de l’enregistrer.

 MapiMessage msg = new MapiMessage("from@aaa.com", "to@aaa.com", "subj", "body");

msg.setCategories(new String[] { "Urgently", "Important" });

MhtSaveOptions saveOptions = new MhtSaveOptions();

saveOptions.getFormatTemplates().set_Item(MhtTemplateName.CATEGORIES,

    saveOptions.getFormatTemplates().get_Item(MhtTemplateName.CATEGORIES).replace("Categories", "Les catégories"));

saveOptions.getRenderingHeaders().add(MhtTemplateName.CATEGORIES);

msg.save("fileName.mhtml", saveOptions);

Lecture et écriture d’un fichier modèle Outlook (.OFT)

Les modèles Outlook sont très utiles lorsque vous devez envoyer à plusieurs reprises un message similaire. Au lieu de préparer le message à chaque fois à partir de zéro, préparez‑le d’abord dans Outlook et enregistrez‑le comme modèle Outlook (OFT). Ensuite, chaque fois que vous devez envoyer le message, vous pouvez le créer à partir du modèle, ce qui fait gagner du temps sur la rédaction du même texte dans le corps ou l’objet, la mise en forme, etc. Aspose.Email 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 :

  1. Charger le modèle en utilisant le MailMessage classe.
  2. Mettre à jour certaines propriétés.
  3. Enregistrer le message au format MSG.

Le fragment de code suivant vous montre comment charger le fichier OFT, mettre à jour le message et l’enregistrer au format MSG.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// The path to the File directory.
String dataDir = "outlook/";

// Load the Outlook template (OFT) file in MailMessage's instance
MailMessage message = MailMessage.load(dataDir + "sample.oft", new MsgLoadOptions());

// Set the sender and recipients information
String senderDisplayName = "John";
String senderEmailAddress = "john@abc.com";
String recipientDisplayName = "William";
String recipientEmailAddress = "william@xzy.com";

message.setSender(new MailAddress(senderEmailAddress, senderDisplayName));
message.getTo().addMailAddress(new MailAddress(recipientEmailAddress, recipientDisplayName));
message.setHtmlBody(message.getHtmlBody().replace("DisplayName", "<b>" + recipientDisplayName + "</b>"));

// Set the name, location and time in email body
String meetingLocation = "<u>" + "Hall 1, Convention Center, New York, USA" + "</u>";
String meetingTime = "<u>" + "Monday, June 28, 2010" + "</u>";
message.setHtmlBody(message.getHtmlBody().replace("MeetingPlace", meetingLocation));
message.setHtmlBody(message.getHtmlBody().replace("MeetingTime", meetingTime));

// Save the message in MSG format and open in Office Outlook
MapiMessage mapimessage = MapiMessage.fromMailMessage(message);
mapimessage.setMessageFlags(MapiMessageFlags.MSGFLAG_UNSENT);
mapimessage.save(dataDir + "ReadAndWritingOutlookTemplateFile_out.msg");

Enregistrement du fichier Outlook MSG en tant que modèle

Le fragment de code suivant vous montre comment enregistrer le fichier Outlook MSG en tant que modèle.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// The path to the File directory.
String dataDir = "outlook/";

try (MapiMessage mapi = new MapiMessage("test@from.to", "test@to.to", "template subject", "Template body")) {
    mapi.saveAsTemplate(dataDir + "mapiToOft.msg");
}

Définir la catégorie de couleur pour les fichiers Outlook 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 :

  1. Ajouter une catégorie de couleur.
  2. Ajouter une autre catégorie de couleur.
  3. Récupérer la liste de toutes les catégories.
  4. Supprimer toutes les catégories.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// The path to the File directory.
String dataDir = "outlook/";

MapiMessage msg = MapiMessage.fromFile(dataDir + "message.msg");

// Add Two category
FollowUpManager.addCategory(msg, "Purple Category");
FollowUpManager.addCategory(msg, "Red Category");

// Retrieve the list of available categories
IList categories = FollowUpManager.getCategories(msg);

// Remove the specified category and then Clear all categories
FollowUpManager.removeCategory(msg, "Red Category");
FollowUpManager.clearCategories(msg);

Accès aux informations de suivi à partir d’un fichier 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ération des informations de lecture et d’accusé de réception

Le fragment de code suivant vous montre comment récupérer les informations de lecture et d’accusé de réception.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// The path to the File directory.
String dataDir = "outlook/";

MapiMessage msg = MapiMessage.fromFile(dataDir + "message.msg");
for (MapiRecipient recipient : msg.getRecipients()) {
    System.out.println("Recipient: " + recipient.getDisplayName());

    // Get the PR_RECIPIENT_TRACKSTATUS_TIME_DELIVERY property
    System.out.println("Delivery time: " + recipient.getProperties().get_Item(MapiPropertyTag.PR_RECIPIENT_TRACKSTATUS_TIME_DELIVERY).getDateTime());

    // Get the PR_RECIPIENT_TRACKSTATUS_TIME_READ property
    System.out.println("Read time" + recipient.getProperties().get_Item(MapiPropertyTag.PR_RECIPIENT_TRACKSTATUS_TIME_READ).getDateTime());
}

Créer des messages de transfert et de réponse

L’API Aspose.Email offre la capacité de créer et 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 sous forme de texte dans le corps du message de réponse

Créer un message de réponse

L’extrait de code suivant montre comment créer un message de réponse.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// The path to the File directory.
String dataDir = "outlook/";

MapiMessage originalMsg = MapiMessage.fromFile(dataDir + "message1.msg");
ReplyMessageBuilder builder = new ReplyMessageBuilder();

// Set ReplyMessageBuilder Properties
builder.setReplyAll(true);
builder.setAdditionMode(OriginalMessageAdditionMode.Textpart);
builder.setResponseText(
        "<p><b>Dear Friend,</b></p> I want to do is introduce my co-author and co-teacher. <p><a href=\"www.google.com\">This is a first link</a></p><p><a href=\"www.google.com\">This is a second link</a></p>");

MapiMessage replyMsg = builder.buildResponse(originalMsg);
replyMsg.save(dataDir + "reply_out.msg");

Créer un message de transfert

L’extrait de code suivant montre comment créer un message de transfert.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// The path to the File directory.
String dataDir = "outlook/";

MapiMessage originalMsg = MapiMessage.fromFile(dataDir + "message1.msg");
ForwardMessageBuilder builder = new ForwardMessageBuilder();
builder.setAdditionMode(OriginalMessageAdditionMode.Textpart);
MapiMessage forwardMsg = builder.buildResponse(originalMsg);
forwardMsg.save(dataDir + "forward_out.msg");

Conserver les dates vides lors de la conversion d’un message

MapiConversionOptions.setPreserveEmptyDates(boolean) propriété indiquant s’il est nécessaire de conserver les dates vides lors de la conversion d’un message. Cette API apparaît dans Aspose.Email 21.5. L’extrait de code suivant montre comment préserver les dates vides.

MailMessage mailMessage = MailMessage.load("message.eml");
System.out.println(mailMessage.getDate()); // zero date
MapiConversionOptions mco = MapiConversionOptions.getUnicodeFormat();
// keep empty dates when converting a message
mco.setPreserveEmptyDates(true);
MapiMessage mapiMessage = MapiMessage.fromMailMessage(mailMessage, mco);
System.out.println(mapiMessage.getClientSubmitTime()); // zero date
// check zero date
if (mapiMessage.getClientSubmitTime().equals(JavaHelper.ZERO_DATE))
    System.out.println("ZERO DATE");