Správa příloh v Outlook zprávách

The Vytváření a ukládání Outlook zpráv (MSG) souborů článek vysvětlil kroky související s vytvářením a ukládáním zpráv, včetně souborů MSG s přílohami. Tento článek se zabývá správou příloh Microsoft Outlook pomocí Aspose.Email. Provědá vás přístupem a ukládáním příloh ze souboru zprávy s využitím attachments vlastnost třídy MapiMessage třída. Tato vlastnost je kolekce patřící k MapiAttachmentCollection třída, umožňující efektivní správu příloh.

Zkontrolovat inline a regular přílohy

„Inline“ a „Regular“ přílohy odkazují na způsob, jakým jsou zahrnuty v e‑mailové zprávě. Regular přílohy jsou soubory připojené tradičním způsobem. Obvykle se zobrazují v seznamu v e‑mailovém klientovi a mohou být staženy příjemcem a uloženy do lokálního úložiště. Inline přílohy, také nazývané vložené nebo inline obrázky, se typicky používají k zahrnutí obrázků či jiných médií do těla e‑mailu. Nezobrazují se v samostatném seznamu, ale jsou přímo součástí obsahu e‑mailu, například v těle zprávy. To vám umožňuje zahrnout obrázky nebo jiná média, která jsou součástí obsahu zprávy. Níže uvedený ukázkový kód demonstruje, jak zjistit, zda je příloha inline nebo regular:

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

Identifikovat referenční přílohy v MAPI zprávách

API Aspose.Email zahrnuje is_reference vlastnost třídy MapiAttachment třída, která umožňuje vývojářům identifikovat referenční přílohy ve zprávě. Vyzkoušejte níže uvedený ukázkový kód, jak funguje v python projektu:

import aspose.email as ae

# Load or create a MapiMessage
msg = ae.mapi.MapiMessage.load("Message_With_Reference_Attachment.msg")

# Iterate through the attachments
for attachment in msg.attachments:
    if attachment.is_reference:
        # Process reference attachment
        pass

Uložit přílohy ze souborů MSG

Pro uložení příloh ze souboru MSG:

  1. Iterujte přes MapiAttachmentCollection kolekci a získejte jednotlivé přílohy.
  2. Pro uložení příloh zavolejte MapiAttachment třída Save() metoda.

Následující úryvek kódu ukazuje, jak uložit přílohy na místní disk:

import aspose.email as ae

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

# Create an instance of MapiMessage from file
message = ae.mapi.MapiMessage.load(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)

Zpracování TNEF příloh

Načíst a uložit přílohy ve formátu TNEF

Aspose.Email poskytuje metody pro práci s TNEF přílohami. Tyto metody umožňují ukládat a načítat přílohy ve formátu TNEF, který se běžně používá v Outlook zprávách (winmail.dat).

Následující ukázkový kód demonstruje, jak extrahovat, uložit a znovu přidat e‑mailové přílohy ve formátu TNEF při správě pomocí paměťových proudů nebo souborů:

import io
from aspose.email.mapi import MapiMessage, MapiAttachment

# Load the EML message (which contains a winmail.dat TNEF attachment)
msg = MapiMessage.load("message.eml")

# Save the first attachment as a winmail.dat file
msg.attachments[0].save_to_tnef("winmail.dat")

# Load the TNEF attachment from the file and add it back to the message
from_tnef_attachment = MapiAttachment.load_from_tnef("winmail.dat")
msg.attachments.add(from_tnef_attachment.long_file_name, from_tnef_attachment.binary_data)

# (Optional) If you also want to use a memory stream instead of the file
ms = io.BytesIO()
msg.attachments[0].save_to_tnef(ms)

# Reset the stream position to the beginning
ms.seek(0)

# Load the TNEF attachment directly from the memory stream and add it
from_tnef_attachment_from_stream = MapiAttachment.load_from_tnef(ms)
msg.attachments.add(from_tnef_attachment_from_stream.long_file_name, from_tnef_attachment_from_stream.binary_data)

Získat vnořené přílohy e‑mailových zpráv

Vložené OLE (Object Linking and Embedding) přílohy se také objevují v kolekci příloh objektu MapiMessage třída. Níže uvedený příklad kódu ukazuje, jak parsovat soubor zprávy a extrahovat vložené přílohy zpráv, následně je uložit na disk pro další použití. MapiMessage třída nabízí from_properties statická metoda pro vytvoření nové zprávy z vložené přílohy. Následující úryvek kódu ukazuje, jak získat vnořené přílohy e‑mailových zpráv:

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)

Odstranit přílohy

Knihovna Aspose.Email poskytuje funkci pro odstranění příloh ze souborů Microsoft Outlook Message (.msg). Použijte remove_attachments(path) metoda, která vyžaduje jako parametr cestu k souboru zprávy. Jako veřejná statická metoda ji lze zavolat přímo bez nutnosti vytvoření instance objektu, což proces činí jednoduchým a efektivním.

Následující úryvek kódu ukazuje, jak odstranit přílohy ze souborů MSG pomocí Aspose.Email:

import aspose.email as ae

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

Můžete také zavolat statickou metodu destroy_attachments třídy MapiMessage třída. Funguje rychleji než remove_attachments, protože metoda remove_attachments parsuje soubor zprávy.

import aspose.email as ae

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

Přidat MSG přílohy

Outlook zpráva může obsahovat jiné Microsoft Outlook zprávy jako přílohy, ať už jako běžné nebo vložené. MapiAttachmentCollection poskytuje přetížené členy třídy přidat metoda pro vytvoření Outlook zpráv s oběma typy příloh.

Přidat referenční přílohy do MAPI zpráv

Referenční příloha obvykle označuje přílohu, která obsahuje odkaz nebo referenci na externí zdroj, místo samotného souboru. Tyto reference jsou často používány v HTML e‑mailových zprávách k odkazování na externí obrázky nebo zdroje hostované na vzdáleném serveru. Místo vložení celého souboru referenční příloha obsahuje URL nebo odkaz na externí obsah.

Pro přidání referenční přílohy do MAPI zprávy použijte add metoda třídy MapiAttachmentCollection třída a ReferenceAttachmentOptions třída pro specifikaci:

  • URL obsahu (přímý odkaz na soubor)

  • URL poskytovatele (odkaz na umístění souboru nebo UI zobrazení)

  • Název poskytovatele přílohy (např. "GoogleDrive")

jak je ukázáno v níže uvedeném příkladě kódu.

import aspose.email as ae

# Load or create a MapiMessage
msg = ae.mapi.MapiMessage()
msg.subject = "Email with Reference Attachment"
msg.body = "This message contains a cloud-based reference attachment."

# Create ReferenceAttachmentOptions
options = ae.mapi.ReferenceAttachmentOptions(
    "https://drive.google.com/file/d/1HJ-M3F2qq1oRrTZ2GZhUdErJNy2CT3DF/",
    "https://drive.google.com/drive/my-drive",
    "GoogleDrive"
)

# Add the reference attachment to the message
msg.attachments.add("Document.pdf", options)

# Save the message to MSG format
msg.save("Message_With_Reference_Attachment.msg")

Vložit zprávy jako přílohy

Následující úryvek kódu demonstruje, jak vložit Outlook MSG soubory jako přílohy do jiného MSG souboru. Vložený MSG soubor obsahuje vlastnost PR_ATTACH_METHOD s hodnotou 5, což označuje, že se jedná o přílohu typu "message".

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

Číst vložené zprávy z příloh

Následující úryvek kódu ukazuje, jak číst vložené zprávy z příloh.

import aspose.email as ae

file_name = "path/to/file.msg"

# Load the MapiMessage from file
message = ae.mapi.MapiMessage.load(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
    # ...

Vložit a nahradit přílohy

Aspose.Email API nabízí funkci vložení příloh na konkrétní index v nadřazené zprávě. Dále umožňuje nahradit obsah existující přílohy jinou zprávovou přílohou. Níže jsou ukázky kódu, které demonstrují, jak provést vložení a nahrazení přílohy.

Vložit přílohy na konkrétní místa

Aspose.Email API umožňuje vložit MSG přílohu do nadřazeného MSG pomocí metody Insert třídy MapiAttachmentCollection. Tato metoda se používá s podpisem MapiAttachmentCollection Insert(int index, string name, MapiMessage msg). Níže je úryvek kódu ilustrující, jak vložit přílohu na konkrétní místo:

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)

Nahradit obsah přílohy

Můžete použít replace metoda pro aktualizaci obsahu vložené přílohy novými daty. Všimněte si však, že tuto metodu nelze použít k vložení přílohy s PR_ATTACH_NUM = 4 do kolekce, která obsahuje jen 2 přílohy. Níže je úryvek kódu, který ukazuje, jak nahradit obsah přílohy:

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)

Přejmenovat přílohy v MapiMessages

S Aspose.Email můžete snadno upravit zobrazované názvy příloh v e‑mailových zprávách načtených ze souboru. Následující ukázkový kód demonstruje, jak toho dosáhnout:

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"