Работа с прикачени файлове към съобщения
Управление на прикачени файлове с Aspose Outlook
Създаването и запазването на Outlook съобщения (MSG) файлове обяснява как да създавате и запазвате съобщения, както и как да създавате MSG файлове с прикачени файлове. Тази статия обяснява как да управляваме прикачени файлове в Microsoft Outlook с Aspose.Email. Прикачените файлове от файл на съобщение се достъпват и запазват на диск, използвайки свойството Attachments на класа MapiMessage. Свойството Attachments е колекция от тип MapiAttachmentCollection.
Проверете дали прикаченият файл е вграден или редовен
"Inline" и "Regular" прикачени файлове се отнасят до начина, по който са включени в имейл съобщение. Regular прикачени файлове са файлове, прикрепени по традиционния начин. Те обикновено се показват в списък в имейл клиента и могат да бъдат изтеглени от получателя и запазени в локално хранилище. Inline прикачени файлове, известни също като вградени или inline изображения, се използват за включване на изображения или други медии в тялото на имейла. Те не се показват в отделен списък, а се визуализират директно в съдържанието на имейла, например в тялото му. Това ви позволява да включвате изображения или други медии, които са част от съдържанието на съобщението. Следният примерен код демонстрира как да определите дали прикаченият файл е inline или 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}")
Запазване на прикачени файлове от Outlook съобщение (MSG) файл
За да запазите прикачени файлове от MSG файл:
- Итерирайте през колекцията MapiAttachmentCollection и получете отделните прикачени файлове.
- За да запазите прикачените файлове, извикайте метода Save() на класа MapiAttachment.
Следният кодов отрязък ви показва как да запазите прикачени файлове на локалния диск.
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)
Получаване на вложени прикачени файлове на имейл съобщения
Вградени OLE прикачени файлове също се появяват в колекцията Attachment на класа MapiMessage. Следният примерен код анализира файл на съобщение за вградени прикачени файлове и го запазва на диск. Статичният метод FromProperties() на класа MapiMessage може да създаде ново съобщение от вграден прикачен файл. Следният кодов отрязък ви показва как да получите вложени прикачени файлове на имейли.
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)
Премахване на прикачени файлове
Библиотеката Aspose Outlook предоставя функционалност за премахване на прикачени файлове от Microsoft Outlook съобщения (.msg) файлове:
- Извикайте метода RemoveAttachments(). Той приема пътя към файла на съобщението като параметър. Той е реализиран като публичен статичен метод, така че не е необходимо да създавате инстанция на обекта.
Следният кодов отрязък ви показва как да премахнете прикачени файлове.
import aspose.email as ae
ae.mapi.MapiMessage.remove_attachments("AttachmentsToRemove_out.msg")
Можете също да извикате статичния метод DestoryAttachment() на класа MapiMessage. Той работи по-бързо от RemoveAttachment(), защото методът RemoveAttachment() анализира файлът на съобщението.
import aspose.email as ae
# Destroy attachments in the MapiMessage
ae.mapi.MapiMessage.destroy_attachments(data_dir + "AttachmentsToDestroy_out.msg")
Добавяне на MSG прикачени файлове
Outlook съобщение може да съдържа други Microsoft Outlook съобщения като прикачени файлове, било то като редовни или вградени съобщения. MapiAttachmentCollection предоставя претоварени версии на метода Add за създаване на Outlook съобщения и с двата вида прикачени файлове.
Try it out!
Добавяйте или премахвайте имейл прикачени файлове онлайн с безплатния Aspose.Email Editor App.
Добавяне на референтен прикачен файл към MapiMessage
"Reference attachment" обикновено се отнася до прикачен файл, който съдържа референция или връзка към външен ресурс, вместо самия файл. Тези референции често се използват в HTML имейли, за да се свържат с външни изображения или ресурси, хоствани на отдалечен сървър. Вместо да вгражда целия файл, референтният прикачен файл включва URL или референция към външното съдържание.
Aspose.Email предоставя набор от инструменти за правилно показване на референтни прикачени файлове, представени в следния примерен код:
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")
Вграждане на съобщение като прикачен файл
Следният кодов отрязък ви показва как Outlook MSG файлове, вградени в MSG файл, съдържат PR_ATTACH_METHOD със стойност 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")
Четене на вградени съобщения от прикачени файлове
Следният кодов отрязък ви показва как да прочетете вградено съобщение от прикачен файл.
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
# ...
Вмъкване и замяна на прикачени файлове
Aspose.Email API предоставя възможност за вмъкване на прикачени файлове на конкретен индекс в родителското съобщение. Той също така предоставя възможност за замяна на съдържанието на прикачен файл с друг прикачен файл от съобщение. Следният кодов отрязък ви показва как се извършва вмъкване и замяна на прикачени файлове.
Вмъкване на конкретно място
Aspose.Email API предоставя възможност за вмъкване на MSG прикачен файл в родителски MSG, като се използва методът Insert на MapiAttachmentCollection – MapiAttachmentCollection Insert(int index, string name, MapiMessage msg). Следният кодов отрязък ви показва как да вмъкнете на конкретно място.
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)
Замяна на съдържанието на прикачения файл
Това може да се използва за замяна на съдържанието на вградените прикачени файлове с нови, като се използва методът Replace. Въпреки това, не може да се използва за вмъкване на прикачен файл с PR_ATTACH_NUM = 4 (например) в колекция, чийто Count = 2. Следният кодов отрязък ви показва как да замените съдържанието на прикачения файл.
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)
Преименуване на прикачен файл в MapiMessage
Възможно е да се променят показваните имена на прикачените файлове в имейл съобщения, заредени от файл. Следният примерен код показва как да се направи това:
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"