Hantera meddelandefiler med Aspose.Email.Outlook

Bestäm MAPI‑objekttyp i en PST‑mapp

En PST‑fil innehåller vanligtvis olika typer av data, såsom e‑postmeddelanden, kalenderhändelser, kontakter och mer. MapiItemType klassen i Aspose.Email låter dig komma åt och kategorisera olika typer av MAPI‑objekt i en PST‑fil. Koden nedan demonstrerar hur man bestämmer typen av ett MAPI‑objekt i en PST‑mapp:

import aspose.email as ae

pst = ae.storage.pst.PersonalStorage.from_file("test.pst")
folder = pst.root_folder.get_sub_folder("Calendar")
for messageInfo in folder.enumerate_messages():
    msg = pst.extract_message(messageInfo)

    # Get the class type based on msg.SupportedType
    item_type = msg.supported_type

    # Non-supported type. It cannot be accessed as appropriate item type.
    if item_type == ae.mapi.MapiItemType.NONE:
        print("Item type not supported")
    # An email message.
    elif item_type == ae.mapi.MapiItemType.MESSAGE:
        # You can access to MapiMessage properties there.
        # A subject for example
        print(msg.subject)
    # A contact item. Can be accessed as MapiContact.
    elif item_type == ae.mapi.MapiItemType.CONTACT:
        contact = msg.to_mapi_message_item()
        # You can access to MapiContact properties there. 
        # A name_info.display_name for example. 
        print(contact.name_info.display_name)
    # A calendar item. Can be accessed as MapiCalendar.
    elif item_type == ae.mapi.MapiItemType.CALENDAR:
        calendar = msg.to_mapi_message_item()
        # You can access to MapiCalendar properties there. 
        # A location for example. 
        print(calendar.location)
    # A distribution list. Can be accessed as MapiDistributionList.
    elif item_type == ae.mapi.MapiItemType.DIST_LIST:
        dlist = msg.to_mapi_message_item()
        # You can access to MapiDistributionList properties there
    # A Journal entry. Can be accessed as MapiJournal.
    elif item_type == ae.mapi.MapiItemType.JOURNAL:
        journal = msg.to_mapi_message_item()
        # You can access to MapiJournal properties there
    # A StickyNote. Can be accessed as MapiNote.
    elif item_type == ae.mapi.MapiItemType.NOTE:
        note = msg.to_mapi_message_item()
        # You can access to MapiNote properties there
    # A Task item. Can be accessed as MapiTask.
    elif item_type == ae.mapi.MapiItemType.TASK:
        task = msg.to_mapi_message_item()
        # You can access to MapiTask properties there

Konvertera MSG till MIME‑meddelande

Aspose.Email API ger möjlighet att konvertera MSG‑fil till MIME‑meddelande med hjälp av ToMailMessage‑metoden.

Ställa in timeout för konvertering och inläsning av ett meddelande

För att begränsa tiden i millisekunder för meddelandekonverteringen (standardvärde 3 sek), timeout‑egenskapen i MailConversionOptions klass används.

Så här kan du ställa in en tidsgräns för meddelandekonvertering och inläsningsprocesser:

import aspose.email as ae

msg = ae.mapi.MapiMessage.load("my.msg")
options = ae.mapi.MailConversionOptions()
options.timeout = 5000
mailMessage = msg.to_mail_message(options)

Genom att ställa in en tidsgräns för meddelandekonvertering och inläsningsprocesser kan du begränsa den maximala tid som dessa operationer får köras. Efter att tidsgränsen har ställts in kan du fortsätta med dina konverterings- och inläsningsprocesser.

Bearbetning av Outlook‑mall (OFT)-filer

Läs, ändra och spara en OFT‑fil

Outlook‑mallar (OFT) erbjuder ett bekvämt sätt att förenkla processen att skicka återkommande e‑postmeddelanden. Istället för att skriva samma e‑post från början varje gång kan du skapa ett meddelande i Outlook och spara det som en Outlook‑mall (OFT). Senare, när du behöver skicka ett liknande meddelande, kan du snabbt generera det från mallen. Detta sparar dig arbete med att skriva om samma innehåll i meddelandetexten, ange ämnesraden, formatering och mer.

Aspose.Email’s MailMessage klass erbjuder ett kraftfullt verktyg för att ladda och manipulera Outlook‑mallfiler (OFT). När en Outlook‑mall har laddats in i en instans av MailMessage‑klassen kan du enkelt uppdatera egenskaper som avsändare, mottagare, meddelandetext, ämne och diverse andra attribut.

import aspose.email as ae

# Load the OFT file
oft_file_path = "your_template.oft"
mail_message = ae.MailMessage.load(oft_file_path)

# Update properties as needed
mail_message.subject = "Updated Subject"
mail_message.body = "Updated body text."

# Save the updated message as an MSG file
msg_file_path = "updated_message.msg"
mail_message.save(msg_file_path, ae.MailMessageSaveType.outlook_message_format_unicode)

print(f"Updated message saved to {msg_file_path}")

Efter att ha gjort nödvändiga uppdateringar kan du skicka e‑postmeddelandet med hjälp av SmtpClient klass:

# Send the email
smtpClient.send(message)

Spara Outlook MSG-fil som mall

För detta ändamål kan du använda MailMessage klass för att skapa ett e‑postmeddelande och sedan spara det som en OFT‑fil. Följande kodexempel visar hur du sparar ett e‑postmeddelande som en Outlook‑mall:

import aspose.email as ae

# Create a new MailMessage
message = ae.MailMessage()
message.subject = "Sample Outlook Template"
message.html_body = "<html><body>This is the body of the email.</body></html>"
message.from_address = ae.MailAddress("your.email@example.com", "Your Name")

# Save the MailMessage as an Outlook Template (OFT) file
oft_file_path = "sample_template.oft"
message.save(oft_file_path, ae.SaveOptions.default_oft)

print(f"Outlook Template saved as {oft_file_path}")

OFT eller MSG: Bestäm typen av ett MapiMessage

Följande kodsnutt illustrerar hur man avgör om ett inläst MAPI‑meddelande representerar ett standard‑e‑postmeddelande eller en Outlook‑mall (OFT):

msg = ae.mapi.MapiMessage.Load("message.msg");
isOft = msg.is_template # returns false

msg = ae.mapi.MapiMessage.Load("message.oft");
isOft = msg.IsTemplate; # returns true

Efter att ha laddat MSG-filen kontrollerar koden om is_template‑egenskapen för MapiMessaage klassen är True eller False. Om den returnerar false är det laddade meddelandet ett standard e‑postmeddelande, inte en Outlook‑mall, annars, om den returnerar true, är meddelandet inte ett standard e‑postmeddelande, utan en Outlook‑mall.

Spara MapiMessage eller MailMessage som OFT

Den SaveOptions är en abstrakt basklass för klasser som tillåter användaren att specificera ytterligare alternativ när ett MailMessage sparas i ett specifikt format. Följande kodexempel demonstrerar hur man sparar ett meddelande i OFT‑format:

import aspose.email as ae

# Save the MailMessage to OFT format
eml = ae.MailMessage.load("message.eml")

eml.save("message.oft", ae.SaveOptions.default_oft)

# or alternative way 2
save_options = ae.MsgSaveOptions(ae.MailMessageSaveType.outlook_template_format)
eml.save("message.oft", save_options)

# or alternative way 3
save_options = ae.SaveOptions.create_save_options(ae.MailMessageSaveType.outlook_template_format)
eml.save("message.oft", save_options)

# Save the MapiMessage to OFT format
msg = ae.mapi.MapiMessage.load("message.msg")

msg.save("message.oft", ae.SaveOptions.default_oft)

# or alternative way 2
save_options = ae.MsgSaveOptions(ae.MailMessageSaveType.outlook_template_format)
msg.save("message.oft", save_options)

# or alternative way 3
save_options = ae.SaveOptions.create_save_options(ae.MailMessageSaveType.outlook_template_format)
msg.save("message.oft", save_options)

Hantera meddelanden med digitala signaturer

Biblioteket tillhandahåller LoadOptions klass, en abstrakt basklass för klasser som låter användaren specificera ytterligare alternativ vid inläsning av ett MailMessage från ett specifikt format. Alternativet för att bevara signaturen är aktiverat som standard.

Konvertera från EML till MSG med bibehållen signatur

Kodexemplet nedan visar hur du laddar ett meddelande, konverterar det till MSG-format och sparar som MSG (signaturen bevaras som standard):


import aspose.email as ae

# Load mail message
loadOptions = ae.EmlLoadOptions()
message = ae.MailMessage.load("Message.eml", loadOptions)
# Save as MSG
message.save("ConvertEMLToMSG_out.msg", ae.SaveOptions.default_msg_unicode)

Konvertera S/MIME-meddelanden från MSG till EML

Aspose.Email låter dig konvertera från MSG till EML och bevara en digital signatur som visas i följande kodsnutt.

import aspose.email as ae

# Load mail message
loadOptions = ae.EmlLoadOptions()
smime_eml = ae.MailMessage.load("smime.eml", loadOptions)

conversion_options = ae.mapi.MapiConversionOptions(ae.mapi.OutlookMessageFormat.UNICODE)
msg = ae.mapi.MapiMessage.from_mail_message(smime_eml, conversion_options)
# Save File to disk
msg.save("ConvertMIMEMessagesFromMSGToEML_out.msg")

Ange färgkategori för Outlook‑MSG‑filer

Ibland kan du behöva särskilja e‑postmeddelanden av särskild betydelse och organisera dem visuellt. Biblioteket erbjuder ett sätt att göra detta genom att tilldela ett specifikt färg till ett meddelandeobjekt. När du sätter en färgkategori för ett objekt kan du enkelt identifiera och lokalisera relaterade objekt på ett ögonkast. Använd FollowUpManager klass för att ställa in färgkategorin för ett meddelande enligt följande kodexempel:


import aspose.email as ae

msg = ae.mapi.MapiMessage.load("my.msg")

# Add Two categories
ae.mapi.FollowUpManager.add_category(msg, "Purple Category")
ae.mapi.FollowUpManager.add_category(msg, "Red Category")

# Retrieve the list of available categories
categories = ae.mapi.FollowUpManager.get_categories(msg)

# Remove the specified category and then Clear all categories
ae.mapi.FollowUpManager.remove_category(msg, "Red Category")
ae.mapi.FollowUpManager.clear_categories(msg)

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

Extrahera information om läskvitto och leveranskvittens

Kodexemplet nedan demonstrerar hur man extraherar mottagarinformation och deras spårningsstatus från ett Outlook‑meddelande (MSG‑fil):

import aspose.email as ae

msg = ae.mapi.MapiMessage.load("received.msg")

for recipient in msg.recipients:
    print(f"Recipient: {recipient.display_name}")
    print(f"Delivery time:  {recipient.properties[ae.mapi.MapiPropertyTag.RECIPIENT_TRACKSTATUS_TIME_DELIVERY]}")
    print(f"Read time:  {recipient.properties[ae.mapi.MapiPropertyTag.RECIPIENT_TRACKSTATUS_TIME_READ]}")

Skapa vidarebefordrade och svarade meddelanden

Aspose.Email tillhandahåller enkla sätt att skapa vidarebefordran och svar på befintliga meddelanden.

Skapa ett vidarebefordrat meddelande

Du kan använda ForwardMessageBuilder klassen för att skapa ett vidarebefordrat meddelande genom att ange ursprungsmeddelandet, avsändare, mottagare, ämne och body. Vidarebefordrade meddelanden kan inkludera det ursprungliga meddelandet som en bilaga eller som kropp i det vidarebefordrade meddelandet. Du har flexibiliteten att anpassa ytterligare egenskaper såsom bilagor, rubriker och formateringsalternativ. Kodexemplet nedan visar hur man skapar ett vidarebefordrat meddelande:


import aspose.email as ae

msg = ae.mapi.MapiMessage.load("original.msg")

builder = ae.tools.ForwardMessageBuilder()
builder.addition_mode = ae.tools.OriginalMessageAdditionMode.TEXTPART

forwardMsg = builder.build_response(msg)
forwardMsg.save("forward_out.msg")

Skapa ett svarmeddelande

Den ReplyMessageBuilder klassen används för att konfigurera svarinställningar, inklusive ursprungsmeddelandet, avsändare, mottagare, svarsläge, ämnesprefix och svarmeddelandets kropp. Svarmeddelanden kan skapas i olika svarslägen som "Svara avsändare" eller "Svara alla" beroende på ditt behov. Du kan anpassa olika egenskaper såsom bilagor, rubriker och formateringsalternativ för svarmeddelandet. Kodexemplet nedan visar hur man skapar ett vidarebefordrat meddelande:

import aspose.email as ae

msg = ae.mapi.MapiMessage.load("original.msg")

builder = ae.tools.ReplyMessageBuilder()

# Set ReplyMessageBuilder Properties
builder.reply_all = True
builder.addition_mode = ae.tools.OriginalMessageAdditionMode.TEXTPART
builder.response_text = "<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>";

replyMsg = builder.build_response(msg)
replyMsg.save("reply_out.msg")