Werken met berichtbijlagen

Bijlagen beheren met Aspose Outlook

Het maken en opslaan van Outlook‑Message (MSG)‑bestanden legde uit hoe berichten te maken en op te slaan, en hoe MSG‑bestanden met bijlagen te creëren. Dit artikel beschrijft hoe Microsoft Outlook‑bijlagen te beheren met Aspose.Email. Bijlagen uit een berichtbestand worden benaderd en opgeslagen op schijf via de Attachments‑eigenschap van de MapiMessage‑klasse. De Attachments‑eigenschap is een collectie van het type MapiAttachmentCollection‑klasse.

Controleren of de bijlage inline of regulier is

"Inline" en "Regular" bijlagen verwijzen naar de manier waarop ze in een e‑mailbericht worden opgenomen. Regular bijlagen zijn bestanden die op de traditionele manier worden toegevoegd. Ze worden meestal weergegeven in een lijst in de e‑mailclient en kunnen door de ontvanger worden gedownload en lokaal worden opgeslagen. Inline bijlagen, ook wel ingesloten of inline‑afbeeldingen genoemd, worden meestal gebruikt om afbeeldingen of andere media op te nemen in de hoofdtekst van de e‑mail. Ze worden niet getoond in een aparte lijst, maar direct binnen de inhoud van de e‑mail, bijvoorbeeld in de berichttekst. Dit maakt het mogelijk om afbeeldingen of andere media op te nemen die onderdeel zijn van de berichtinhoud. De onderstaande code‑voorbeeld toont hoe je kunt bepalen of een bijlage inline of regulier is:

import aspose.email as ae

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

for attachment in msg.attachments:
    print(f"{attachment.display_name}:{attachment.is_inline}")

Bijlagen opslaan vanuit Outlook‑bericht (MSG)-bestand

Om bijlagen uit een MSG‑bestand op te slaan:

  1. Itereer door de MapiAttachmentCollection‑collectie en haal de afzonderlijke bijlagen op.
  2. Om de bijlagen op te slaan, roep de Save()‑methode van de MapiAttachment‑klasse aan.

Het volgende codefragment toont hoe u bijlagen opslaat op de lokale schijf.

import aspose.email as ae

data_dir = "C://dataDir/"
file_name = "message.msg"

# Create an instance of MapiMessage from file
message = ae.mapi.MapiMessage.from_file(data_dir + file_name)

# Iterate through the attachments collection
for attachment in message.attachments:
    # Save the individual attachment
    attachment.save(data_dir + attachment.file_name)

Geneste mail‑berichtbijlagen ophalen

Ingebedde OLE‑bijlagen verschijnen ook in de Attachment‑collectie van de MapiMessage‑klasse. Het volgende codevoorbeeld parseert een berichtbestand voor ingebedde berichtbijlagen en slaat deze op schijf op. De statische FromProperties()‑methode van MapiMessage kan een nieuw bericht maken van een ingebedde bijlage. Het volgende codefragment toont hoe u geneste mail‑berichtbijlagen krijgt.

import aspose.email as ae

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

# Create a MapiMessage object from the individual attachment
get_attachment = ae.mapi.MapiMessage.from_properties(eml.attachments[0].object_data.properties)

# Create an object of type MailMessageInterpreter from the above message and save the embedded message to a file on disk
mail_message = get_attachment.to_mail_message(ae.mapi.MailConversionOptions())
mail_message.save("NestedMailMessageAttachments_out.eml", ae.SaveOptions.default_eml)

Bijlagen verwijderen

De Aspose Outlook‑bibliotheek biedt de functionaliteit om bijlagen te verwijderen uit Microsoft Outlook‑berichten (.msg)-bestanden:

  • Roep de RemoveAttachments()‑methode aan. Deze neemt het pad van het berichtbestand als parameter. De methode is geïmplementeerd als een publieke statische methode, dus u hoeft het object niet te instantieren.

Het volgende codefragment toont hoe u bijlagen verwijdert.

import aspose.email as ae

ae.mapi.MapiMessage.remove_attachments("AttachmentsToRemove_out.msg")

U kunt ook de statische methode DestoryAttachment() van de MapiMessage‑klasse aanroepen. Deze werkt sneller dan RemoveAttachment(), omdat de RemoveAttachment()‑methode het berichtbestand parseert.

import aspose.email as ae

# Destroy attachments in the MapiMessage
ae.mapi.MapiMessage.destroy_attachments(data_dir + "AttachmentsToDestroy_out.msg")

MSG‑bijlagen toevoegen

Een Outlook‑bericht kan andere Microsoft Outlook‑berichten bevatten als bijlagen, zowel als reguliere als ingebedde berichten. De MapiAttachmentCollection biedt overladen versies van de Add‑methode om Outlook‑berichten te maken met beide soorten bijlagen.

Voeg een referentie‑bijlage toe aan een MapiMessage

"Referentie‑bijlage" verwijst doorgaans naar een bijlage die een referentie of koppeling bevat naar een externe bron in plaats van het daadwerkelijke bestand zelf. Deze referenties worden vaak gebruikt in HTML‑e‑mails om te linken naar externe afbeeldingen of bronnen die op een externe server gehost worden. In plaats van het volledige bestand in te sluiten, bevat een referentie‑bijlage een URL of verwijzing naar de externe inhoud.

Aspose.Email biedt een reeks hulpmiddelen voor een correcte weergave van referentie‑bijlagen, getoond in het volgende codevoorbeeld:

import aspose.email as ae

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

# Add reference attachment
msg.attachments.add("Document.pdf",
    "https://drive.google.com/file/d/1HJ-M3F2qq1oRrTZ2GZhUdErJNy2CT3DF/",
    "https://drive.google.com/drive/my-drive",
    "GoogleDrive")

# Also, you can set additional attachment properties
msg.attachments[0].set_property(ae.mapi.KnownPropertyList.ATTACHMENT_PERMISSION_TYPE, int(ae.AttachmentPermissionType.ANYONE_CAN_EDIT))
msg.attachments[0].set_property(ae.mapi.KnownPropertyList.ATTACHMENT_ORIGINAL_PERMISSION_TYPE, 0)
msg.attachments[0].set_property(ae.mapi.KnownPropertyList.ATTACHMENT_IS_FOLDER, False)
msg.attachments[0].set_property(ae.mapi.KnownPropertyList.ATTACHMENT_PROVIDER_ENDPOINT_URL, "")
msg.attachments[0].set_property(ae.mapi.KnownPropertyList.ATTACHMENT_PREVIEW_URL, "")
msg.attachments[0].set_property(ae.mapi.KnownPropertyList.ATTACHMENT_THUMBNAIL_URL, "")
# Finally save the message
msg.save("msg_with_ref_attach.msg")

Een bericht als bijlage inbedden

Het volgende codefragment toont hoe Outlook‑MSG‑bestanden die in een MSG‑bestand zijn ingebed een PR_ATTACH_METHOD bevatten met waarde 5.

import aspose.email as ae

# Create a new MapiMessage
message = ae.mapi.MapiMessage("from@test.com", "to@test.com", "Subj", "This is a message body")

# Load the attachment message
attach_msg = ae.mapi.MapiMessage.load("Message.msg")

# Add the attachment to the message
message.attachments.add("Weekly report.msg", attach_msg)

# Save the message with the embedded message attachment
message.save("WithEmbeddedMsg_out.msg")

Ingesloten berichten lezen uit bijlagen

Het volgende codefragment toont hoe u een ingebed bericht uit een bijlage leest.

import aspose.email as ae

file_name = "path/to/file.msg"

# Load the MapiMessage from file
message = ae.mapi.MapiMessage.from_file(file_name)

# Check if the first attachment is an Outlook message
if message.attachments[0].object_data.is_outlook_message:
    # Get the embedded message as MapiMessage
    embedded_message = message.attachments[0].object_data.to_mapi_message()
    # Perform further operations with the embedded message
    # ...

Invoegen en vervangen van bijlagen

De Aspose.Email‑API biedt de mogelijkheid om bijlagen in te voegen op een specifieke index in het bovenliggende bericht. Daarnaast biedt het de mogelijkheid om de inhoud van een bijlage te vervangen door een andere berichtbijlage. Het volgende codefragment toont de invoeging en vervanging van bijlagen.

Invoegen op specifieke locatie

De Aspose.Email‑API biedt de mogelijkheid om een MSG‑bijlage in te voegen in een bovenliggende MSG via de Insert‑methode van MapiAttachmentCollection: MapiAttachmentCollection Insert(int index, string name, MapiMessage msg). Het volgende codefragment toont hoe u op een specifieke locatie invoegt.

import aspose.email as ae
from io import BytesIO

file_name = "path/to/file.msg"

# Load the MapiMessage from file
message = ae.mapi.MapiMessage.load(file_name)

# Save the attachment to a memory stream
memory_stream = BytesIO()
message.attachments[2].save(memory_stream)

# Load the attachment from the memory stream
get_data = ae.mapi.MapiMessage.load(memory_stream)

# Insert the loaded attachment at index 1
message.attachments.insert(1, "new 11", get_data)

Inhoud van bijlage vervangen

Dit kan worden gebruikt om de inhoud van ingebedde bijlagen te vervangen door nieuwe via de Replace‑methode. Het kan echter niet worden gebruikt om een bijlage met PR_ATTACH_NUM = 4 (bijvoorbeeld) in een collectie met collection.Count = 2 in te voegen. Het volgende codefragment toont hoe u bijlage‑inhoud vervangt.

import aspose.email as ae
from io import BytesIO
file_name = "path/to/file.msg"

# Load the MapiMessage from file
message = ae.mapi.MapiMessage.load(file_name)

# Save the attachment to a memory stream
memory_stream = BytesIO()
message.attachments[2].save(memory_stream)

# Load the attachment from the memory stream
get_data = ae.mapi.MapiMessage.load(memory_stream)

# Replace the attachment at index 1 with the loaded attachment
message.attachments.replace(1, "new 1", get_data)

Een bijlage hernoemen in een MapiMessage

Het is mogelijk de weergavenamen van de bijlagen in e‑mailberichten die uit een bestand zijn geladen aan te passen. Het onderstaande codevoorbeeld toont hoe dit te doen:

import aspose.email as ae

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

msg.attachments[0].display_name = "New display name 1"
msg.attachments[1].display_name = "New display name 2"