Gestione dei file di messaggi con Aspose.Email.Outlook

Determinare il tipo di elemento MAPI in una cartella PST

Un file PST tipicamente contiene vari tipi di dati, come messaggi email, eventi di calendario, contatti e altro. Il MapiItemType La classe di Aspose.Email consente di accedere e categorizzare diversi tipi di elementi MAPI all’interno di un file PST. Il codice qui sotto dimostra come determinare il tipo di un elemento MAPI in una cartella PST:

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

Conversione di MSG in messaggio MIME

L’API Aspose.Email consente di convertire un file MSG in un messaggio MIME usando il metodo ToMailMessage.

Impostare il timeout per la conversione e il caricamento di un messaggio

Per limitare il tempo in millisecondi della conversione del messaggio (valore predefinito 3 sec), la proprietà timeout del MailConversionOptions viene utilizzata la classe.

Ecco come è possibile impostare un timeout per i processi di conversione e caricamento dei messaggi:

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)

Impostando un timeout per i processi di conversione e caricamento dei messaggi, è possibile controllare il tempo massimo consentito a queste operazioni. Dopo aver impostato il timeout, è possibile procedere con le operazioni di conversione e caricamento del messaggio.

Elaborazione dei file Outlook Template (OFT)

Carica, modifica e salva un file OFT

I modelli Outlook (OFT) offrono un modo conveniente per semplificare il processo di invio di messaggi email ripetitivi. Invece di comporre la stessa email da zero ogni volta, è possibile creare un messaggio in Outlook e salvarlo come modello Outlook (OFT). In seguito, quando si ha bisogno di inviare un messaggio simile, è possibile generarlo rapidamente dal modello. Questo approccio elimina la necessità di riscrivere lo stesso contenuto nel corpo del messaggio, specificare l’oggetto, la formattazione e altro.

di Aspose.Email MailMessage classe fornisce uno strumento potente per caricare e manipolare i file modello Outlook (OFT). Una volta che un modello Outlook è caricato in un’istanza della classe MailMessage, è possibile aggiornare facilmente proprietà come mittente, destinatario, corpo del messaggio, oggetto e vari altri attributi.

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

Dopo aver effettuato gli aggiornamenti necessari, puoi inviare l’email usando il SmtpClient classe:

# Send the email
smtpClient.send(message)

Salvataggio del file Outlook MSG come modello

Per questo scopo, puoi usare il MailMessage classe per creare un’email, quindi salvarla come file OFT. Il seguente esempio di codice ti mostrerà come salvare un’email come modello Outlook:

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 o MSG: Determinare il tipo di un MapiMessage

Il seguente frammento di codice illustra come determinare se un messaggio MAPI caricato rappresenta un’email standard o un modello Outlook (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

Dopo aver caricato il file MSG, il codice verifica se la proprietà is_template del MapiMessaage La classe è True o False. Nel caso ritorni false, il messaggio caricato è un messaggio email standard, non un modello Outlook; al contrario, se ritorna true, il messaggio non è un’email standard, ma un modello Outlook.

Salvare MapiMessage o MailMessage come OFT

Il SaveOptions è una classe base astratta per classi che consentono all’utente di specificare opzioni aggiuntive quando si salva un MailMessage in un formato particolare. Il seguente esempio di codice dimostra come salvare un messaggio in formato OFT:

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)

Gestire i messaggi con firme digitali

La libreria fornisce il LoadOptions classe, una classe base astratta per classi che consentono all’utente di specificare opzioni aggiuntive quando si carica un MailMessage da un formato particolare. L’opzione di preservazione della firma è impostata di default.

Convertire da EML a MSG preservando la firma

Il campione di codice qui sotto dimostra come caricare un messaggio, convertirlo in formato MSG e salvarlo come MSG (la firma è preservata per impostazione predefinita):


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)

Converti messaggi S/MIME da MSG a EML

Aspose.Email consente di convertire da MSG a EML preservando una firma digitale come mostrato nel seguente frammento di codice.

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

Impostare la categoria colore per file Outlook MSG

A volte potrebbe essere necessario differenziare le email di particolare importanza e organizzarle visivamente. La libreria fornisce un modo per farlo assegnando un colore specifico a un elemento di messaggio. Quando imposti una categoria colore per un elemento, ti consente di identificare e individuare facilmente gli elementi correlati a colpo d’occhio. Usa FollowUpManager classe per impostare la categoria colore per un messaggio come nel seguente esempio di codice:


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)

Accedere alle informazioni di Follow Up da un file MSG

Estrarre informazioni di lettura e conferma di consegna

Il seguente esempio di codice dimostra come estrarre le informazioni dei destinatari e il loro stato di tracciamento da un messaggio Outlook (MSG):

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

Creazione di messaggi di inoltro e risposta

Aspose.Email offre modi semplici per creare messaggi inoltrati e di risposta basati su quelli esistenti.

Creazione di un messaggio di inoltro

È possibile utilizzare il ForwardMessageBuilder La classe per creare un messaggio di inoltro impostando il messaggio originale, mittente, destinatari, oggetto e corpo. I messaggi di inoltro possono includere il messaggio originale come allegato o come corpo del messaggio inoltrato. Hai la flessibilità di personalizzare proprietà aggiuntive come allegati, intestazioni e opzioni di formattazione. Il campione di codice qui sotto mostra come creare un messaggio di inoltro:


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

Creare un messaggio di risposta

Il ReplyMessageBuilder La classe è usata per configurare le impostazioni di risposta, includendo il messaggio originale, mittente, destinatari, modalità di risposta, prefisso dell’oggetto e il corpo del messaggio di risposta. I messaggi di risposta possono essere creati in diverse modalità come "Rispondi al mittente" o "Rispondi a tutti" in base alle tue esigenze. Puoi personalizzare varie proprietà come allegati, intestazioni e opzioni di formattazione per il messaggio di risposta. Il campione di codice qui sotto mostra come creare un messaggio di inoltro:

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