metoda k uložení přílohy na disk.

Správa příloh pomocí Aspose Outlook

Vytváření a ukládání souborů Outlook Message (MSG) vysvětluje, jak vytvořit a uložit zprávy a jak vytvořit soubory MSG s přílohami. Tento článek popisuje, jak spravovat přílohy Microsoft Outlook pomocí Aspose.Email. Přílohy ze souboru zprávy jsou přístupné a ukládají se na disk pomocí vlastnosti Attachments třídy MapiMessage. Vlastnost Attachments je kolekce typu třídy MapiAttachmentCollection.

Zkontrolujte, zda je příloha inline nebo běžná

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

Uložení příloh ze zprávy Outlook (MSG) souboru

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

  1. Projděte kolekci MapiAttachmentCollection a získejte jednotlivé přílohy.
  2. Pro uložení příloh zavolejte metodu Save() třídy MapiAttachment.

Následující úryvek kódu vám ukazuje, jak uložit přílohy na lokální 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.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)

Získání vnořených e‑mailových příloh

Vložené OLE přílohy se také objevují v kolekci Attachment třídy MapiMessage. Následující příklad kódu parsuje soubor zprávy na vložené přílohy zpráv a ukládá je na disk. Statická metoda FromProperties() třídy MapiMessage může vytvořit novou zprávu z vložené přílohy. Následující úryvek kódu vám ukazuje, jak získat vnořené e‑mailové přílohy.

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)

Odstranění příloh

Knihovna Aspose Outlook poskytuje funkci pro odebrání příloh ze souborů Microsoft Outlook Message (.msg):

  • Zavolejte metodu RemoveAttachments(). Přijímá jako parametr cestu k souboru se zprávou. Je implementována jako veřejná statická metoda, takže není třeba vytvářet instanci objektu.

Následující úryvek kódu vám ukazuje, jak odstraňovat přílohy.

import aspose.email as ae

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

Můžete také zavolat statickou metodu DestoryAttachment() třídy MapiMessage. Funguje rychleji než RemoveAttachment(), protože metoda RemoveAttachment() parsuje soubor se zprávou.

import aspose.email as ae

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

Přidání MSG příloh

Zpráva Outlook může obsahovat jiné zprávy Microsoft Outlook jako přílohy – ať už jako běžné nebo vložené zprávy. MapiAttachmentCollection poskytuje přetížené verze metody Add pro vytvoření Outlook zpráv s oběma typy příloh.

Přidat referenční přílohu do MapiMessage

„Referenční příloha“ obvykle označuje přílohu, která obsahuje odkaz na externí zdroj místo samotného souboru. Tyto odkazy se často používají v HTML e‑maily k propojení 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.

Aspose.Email poskytuje sadu nástrojů pro správné zobrazení referenčních příloh, uvedených v následující ukázce kódu:

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

Vložit zprávu jako přílohu

Následující úryvek kódu vám ukazuje, jak Outlook MSG soubory vložené v MSG souboru obsahují PR_ATTACH_METHOD s hodnotou 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")

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

Následující úryvek kódu vám ukazuje, jak načíst vloženou zprávu z přílohy.

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
    # ...

Vkládání a nahrazování příloh

API Aspose.Email poskytuje možnost vložit přílohy na konkrétní index v nadřazené zprávě. Také umožňuje nahradit obsah přílohy jinou přílohou zprávy. Následující úryvek kódu vám ukazuje, jak provést vložení a nahrazení příloh.

Vložení na konkrétní místo

API Aspose.Email poskytuje možnost vložit MSG přílohu do nadřazeného MSG pomocí metody Insert třídy MapiAttachmentCollection – MapiAttachmentCollection Insert(int index, string name, MapiMessage msg). Následující úryvek kódu vám ukazuje, jak vložit 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

Toto lze použít k nahrazení obsahu vložené přílohy novým pomocí metody Replace. Nemůže však být použito k vložení přílohy s PR_ATTACH_NUM = 4 (například) do kolekce, kde collection.Count = 2. Následující úryvek kódu vám 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)

vlastnost udávající, zda je nutné zachovat prázdné datumy při převodu zprávy. Toto API se objevuje v Aspose.Email 21.5. Následující úryvek kódu ukazuje, jak zachovat prázdná data.

Je možné upravit zobrazované názvy příloh v e‑mailových zprávách načtených ze souboru. Níže uvedený ukázkový kód ukazuje, jak to provést:

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"