Hantera meddelandefiler med Aspose.Email.Outlook

Konvertera MSG till MIME‑meddelande

Aspose.Email API ger möjlighet att konvertera MSG‑filer till MIME‑meddelanden med hjälp av toMailMessage metod.

// 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);

Konvertera MSG till EML med bevarad RTF‑kropp

API:t tillhandahåller följande metoder för att bevara RTF‑kroppen vid konvertering från MSG till EML:

Följande kodexempel visar hur du behåller rtf‑kroppen i 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);

Konvertera MSG till MHTML med bevarad kategorirubrik

Aspose.Email API ger möjligheten att lägga till en kategorirubrik när meddelandet konverteras till MHTML. Denna funktion specificeras av MhtSaveOptions klass som ett ytterligare alternativ när du sparar MailMessage i Mhtml‑format.

Följande kodexempel demonstrerar hur du skapar en MHT‑ (MHTML‑)fil från ett MapiMessage‑objekt, anpassar formatering och rubriker i MHT‑filen med hjälp av MhtSaveOptions, anger kategorier för e‑postmeddelandet och sedan modifierar formatmallarna och renderingsrubrikerna för MHT‑filen innan den sparas.

 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);

Läsa och skriva Outlook‑mallfil (.OFT)

Outlook-mallar är väldigt användbara när du vill skicka ett liknande e‑postmeddelande om och om igen. Istället för att skapa meddelandet från början varje gång, kan du först förbereda meddelandet i Outlook och spara det som en Outlook‑mall (OFT). Därefter, när du behöver skicka meddelandet, kan du skapa det från mallen, vilket sparar tid på att skriva samma text i meddelandetexten eller ämnesraden, ställa in formatering osv. Aspose.Email MailMessage klass kan användas för att läsa in och läsa en Outlook-mall (OFT)-fil. När Outlook-mallen har laddats i en instans av MailMessage klass kan du uppdatera avsändare, mottagare, meddelandetext, ämne och andra egenskaper. Efter att ha uppdaterat egenskaperna:

  • Skicka e‑posten med hjälp av SmtpClient klass eller
  • Spara meddelandet som MSG och gör ytterligare uppdateringar/validering med Microsoft Outlook.

I kodexemplen nedan gör vi:

  1. Läs in mallen med hjälp av MailMessage klass.
  2. Uppdatera några av egenskaperna.
  3. Spara meddelandet i MSG-format.

Följande kodexempel visar hur du laddar OFT-filen, uppdaterar meddelandet och sparar det i MSG-format.

// 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");

Spara Outlook MSG-fil som mall

Följande kodexempel visar hur du sparar Outlook MSG-filen som en mall.

// 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");
}

Ställa in färgkategori för Outlook MSG-filer

En färgkategori markerar ett e‑postmeddelande för någon form av vikt eller kategori. Microsoft Outlook låter användare tilldela färgkategorier för att särskilja e‑post. För att hantera färgkategorin, använd FollowUpManager. Det innehåller funktioner såsom addCategory, removeCategory, clearCategories och getCategories.

  • addCategory tar MapiMessage och färgkategori‑strängen, till exempel "Purple Category" eller "Red Category", som argument.
  • removeCategory tar MapiMessage och färgkategori‑strängen som ska tas bort från meddelandet.
  • clearCategories används för att ta bort alla färgkategorier från meddelandet.
  • getCategories används för att hämta alla färgkategorier från ett specifikt meddelande.

Följande exempel utför uppgifterna som anges nedan:

  1. Lägg till en färgkategori.
  2. Lägg till en annan färgkategori.
  3. Hämta listan över alla kategorier.
  4. Ta bort alla kategorier.
// 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);

Åtkomst till uppföljningsinformation från MSG-fil

Aspose.Email API ger möjlighet att komma åt uppföljningsinformation från ett skickat eller mottaget meddelande. Det kan hämta information om läsbekräftelse, leveransläsbekräftelse och röstningsresultat från en meddelandefil.

Hämta information om läs- och leveransbekräftelse

Följande kodexempel visar hur du hämtar information om läs- och leveransbekräftelser.

// 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());
}

Skapa vidarebefordrade och svarade meddelanden

Aspose.Email API ger möjlighet att skapa och formatera vidarebefordrade och svarade meddelanden. Det ReplyMessageBuilder och ForwardMessageBuilder klasser i API:et används för att respektive skapa svar‑ och vidarebefordrade meddelanden. Ett svar‑ eller vidarebefordrat meddelande kan specificeras att skapas med någon av lägena i OriginalMessageAdditionMode enum. Denna enum har följande värden:

  • OriginalMessageAdditionMode.None – Originalmeddelandet inkluderas inte i svarmeddelandet.
  • OriginalMessageAdditionMode.Attachment – Originalmeddelandet inkluderas som en bilaga i svarmeddelandet
  • OriginalMessageAdditionMode.Textpart – Originalmeddelandet inkluderas som text i svarmeddelandets kropp

Skapa svarmeddelande

Följande kodsnutt visar hur du skapar ett svarmeddelande.

// 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");

Skapa ett vidarebefordrat meddelande

Följande kodsnutt visar hur du skapar ett vidarebefordrat meddelande.

// 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");

Bevara tomma datum vid konvertering av ett meddelande

MapiConversionOptions.setPreserveEmptyDates(boolean) egenskap som indikerar om det är nödvändigt att behålla tomma datum vid konvertering av ett meddelande. Detta API finns i Aspose.Email 21.5. Följande kodsnutt visar hur du bevarar tomma datum.

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");