Berichtbestanden beheren met Aspose.Email.Outlook

Bepaal het MAPI‑itemtype in een PST‑map

Een PST‑bestand bevat doorgaans verschillende soorten gegevens, zoals e‑mailberichten, agenda‑evenementen, contactpersonen en meer. De MapiItemType klasse van Aspose.Email maakt het mogelijk verschillende soorten MAPI‑items binnen een PST‑bestand te benaderen en te categoriseren. De code hieronder toont hoe u het type van een MAPI‑item in een PST‑map bepaalt:

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

MSG naar MIME‑bericht converteren

De Aspose.Email‑API biedt de mogelijkheid om een MSG‑bestand te converteren naar een MIME‑bericht met behulp van de ToMailMessage‑methode.

Time‑out instellen voor conversie en laden van een bericht

Om de tijd in milliseconden van de berichtconversie te beperken (standaardwaarde 3 sec), gebruik je de timeout‑eigenschap van de MailConversionOptions klasse wordt gebruikt.

Zo stel je een time‑out in voor berichtconversie‑ en laadprocessen:

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)

Door een time‑out in te stellen voor berichtconversie‑ en laadprocessen, kun je de maximale tijd die deze bewerkingen mogen duren regelen. Na het instellen van de time‑out kun je doorgaan met je berichtconversie‑ en laadprocessen.

Verwerking van Outlook‑template (OFT)-bestanden

Een OFT‑bestand laden, wijzigen en opslaan

Outlook‑templates (OFT) bieden een handige manier om het proces van het verzenden van repetitieve e‑mailberichten te stroomlijnen. In plaats van elke keer dezelfde e‑mail vanaf nul te schrijven, kunt u een bericht in Outlook maken en opslaan als een Outlook‑template (OFT). Later, wanneer u een soortgelijk bericht moet verzenden, kunt u dit snel genereren vanuit de template. Deze aanpak bespaart u de moeite van het opnieuw schrijven van dezelfde inhoud in de berichttekst, het specificeren van de onderwerpregel, opmaak, enz.

Aspose.Email’s MailMessage klasse biedt een krachtig hulpmiddel om Outlook‑template‑bestanden (OFT) te laden en te manipuleren. Zodra een Outlook‑template is geladen in een instantie van de MailMessage‑klasse, kunt u eenvoudig eigenschappen bijwerken zoals afzender, ontvanger, berichtinhoud, onderwerp en diverse andere attributen.

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

Na het aanbrengen van de benodigde updates kunt u de e‑mail verzenden met behulp van de SmtpClient klasse:

# Send the email
smtpClient.send(message)

Outlook MSG‑bestand opslaan als sjabloon

Voor dit doel kunt u de MailMessage klasse om een e‑mail te creëren en vervolgens op te slaan als een OFT‑bestand. Het volgende codevoorbeeld laat zien hoe u een e‑mail opslaat als een Outlook‑template.

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 of MSG: Het type van een MapiMessage bepalen

Het volgende codefragment laat zien hoe u kunt bepalen of een geladen MAPI‑bericht een standaard e‑mailbericht of een Outlook‑template (OFT) vertegenwoordigt:

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

Na het laden van het MSG‑bestand controleert de code of de is_template‑eigenschap van de MapiMessaage klasse is True of False. Als het false retourneert, is het geladen bericht een standaard e‑mailbericht, geen Outlook‑sjabloon; retourneert het true, dan is het bericht geen standaard e‑mailbericht, maar een Outlook‑sjabloon.

Opslaan van MapiMessage of MailMessage als OFT

De SaveOptions is een abstracte basisklasse voor klassen die de gebruiker in staat stelt extra opties op te geven bij het opslaan van een MailMessage in een bepaald formaat. Het volgende codevoorbeeld toont hoe een bericht op te slaan in OFT‑formaat:

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)

Berichten beheren met digitale handtekeningen

De bibliotheek biedt de LoadOptions klasse, een abstracte basisklasse voor klassen die de gebruiker in staat stelt extra opties op te geven bij het laden van een MailMessage uit een bepaald formaat. De optie voor handtekeningbehoud is standaard ingeschakeld.

Converteren van EML naar MSG met handtekeningbehoud

Het onderstaande codevoorbeeld toont hoe je een bericht laadt, converteert naar MSG-formaat en opslaat als MSG (de handtekening wordt standaard behouden):


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)

Converteer S/MIME-berichten van MSG naar EML

Aspose.Email stelt je in staat om van MSG naar EML te converteren waarbij een digitale handtekening behouden blijft, zoals getoond in de volgende codefragment.

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

Kleuren‑categorie instellen voor Outlook‑MSG‑bestanden

Soms moet je e‑mails van bijzondere belangrijkheid onderscheiden en visueel organiseren. De bibliotheek biedt een manier om dit te doen door een specifieke kleur toe te wijzen aan een berichtitem. Als je een kleuren‑categorie voor een item instelt, kun je gerelateerde items in één oogopslag makkelijk identificeren en vinden. Gebruik FollowUpManager klasse om de kleurcategorie voor een bericht in te stellen, zoals in het volgende codevoorbeeld:


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)

Toegang tot follow‑up‑informatie uit MSG‑bestand

Lees‑ en bezorgingsbevestigingsinformatie extraheren

De onderstaande code‑voorbeeld toont hoe je ontvangerinformatie en hun volgsituatie uit een Outlook‑bericht (MSG) kunt halen:

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]}")

Doorgestuurde en antwoordberichten maken

Aspose.Email biedt eenvoudige manieren om doorstuur‑ en antwoord‑berichten te maken op basis van bestaande berichten.

Een doorgestuurd bericht maken

Je kunt de ForwardMessageBuilder klasse om een doorstuurbericht te maken door het bronbericht, de afzender, ontvangers, onderwerp en inhoud in te stellen. Doorstuurberichten kunnen het originele bericht als bijlage of als body van het doorstuurbericht bevatten. U heeft de flexibiliteit om extra eigenschappen zoals bijlagen, headers en opmaakopties aan te passen. Het codevoorbeeld hieronder laat zien hoe u een doorstuurbericht maakt:


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

Een antwoordbericht maken

De ReplyMessageBuilder klasse wordt gebruikt om antwoordinstellingen te configureren, inclusief het bronbericht, afzender, ontvangers, antwoordmodus, onderwerp‑prefix en de inhoud van het antwoordbericht. Antwoordberichten kunnen in verschillende antwoordmodi worden aangemaakt, zoals "Antwoorden aan afzender" of "Allen beantwoorden", afhankelijk van uw behoefte. U kunt diverse eigenschappen aanpassen, zoals bijlagen, headers en opmaakopties voor het antwoordbericht. Het codevoorbeeld hieronder laat zien hoe u een doorstuurbericht maakt:

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