Управление на прикачени файлове в Outlook съобщения
Този Създаване и запазване на Outlook съобщения (MSG) файлове статията обясни стъпките за създаване и запазване на съобщения, включително MSG файлове с прикачени файлове. Тази статия се задълбочава в управлението на прикачени файлове в Microsoft Outlook с помощта на Aspose.Email. Тя ще ви води през достъпа и запазването на прикачени файлове от файл със съобщение, използвайки attachments свойство на MapiMessage клас. Това свойство е колекция, принадлежаща на MapiAttachmentCollection клас, позволяващ ефективно управление на прикачени файлове.
Проверка на Inline срещу Regular прикачени файлове
"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}")
Идентифициране на референтни прикачени файлове в MAPI съобщения
Aspose.Email API включва is_reference свойство на MapiAttachment клас, който позволява на разработчиците да идентифицират референтни прикачени файлове в съобщение. Пробвайте примерния код по-долу, за да видите как работи в Python проект:
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
Запазване на прикачени файлове от MSG файлове
За да запазите прикачени файлове от MSG файл:
- Итерарайте през MapiAttachmentCollection колекция и вземете отделните прикачени файлове.
- За да запазите прикачените файлове, извикайте MapiAttachment клас Save() метод.
Следният фрагмент от код показва как да запазите прикачени файлове на локалния диск:
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)
Работа с TNEF прикачени файлове
Зареждане и запазване на прикачени файлове в TNEF формат
Aspose.Email предоставя методи за работа с TNEF прикачени файлове. Тези методи позволяват запазване и зареждане на прикачени файлове в TNEF формат, често използван в Outlook съобщения (winmail.dat).
- static MapiAttachment MapiAttachment.load_from_tnef(string fileName) – Зарежда прикачен файл от TNEF файл.
- static MapiAttachment MapiAttachment.load_from_tnef(Stream stream) – Зарежда прикачен файл от TNEF поток.
- void MapiAttachment.save_to_tnef(string filename) – Записва прикачен файл в TNEF файл.
- void MapiAttachment.save_to_tnef(Stream stream) – Записва прикачен файл в TNEF поток.
Следният примерен код демонстрира как да се извлекат, запазят и повторно добавят TNEF формат имейл прикачени файлове, като се управляват чрез потоци в паметта или файлове:
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)
Извличане на вложени имейл съобщения от прикачени файлове
Вградените OLE (Object Linking and Embedding) прикачени файлове също се появяват в колекцията от прикачени файлове на MapiMessage клас. Примерният код по-долу демонстрира как да се анализира файл със съобщение и да се извлекат вложени прикачени съобщения, след което да се запазят на диск за по-нататъшна употреба. MapiMessage клас предлага from_properties статичен метод за създаване на ново съобщение от вложен прикачен файл. Следният фрагмент от код показва как да получите вложени прикачени имейл съобщения:
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.Email предоставя функционалност за премахване на прикрепени файлове от Microsoft Outlook Message (.msg) файлове. Използвайте remove_attachments(path) метод, който изисква пътя към файла със съобщението като параметър. Като публичен статичен метод, можете да го извикате директно без да създавате обект, което прави процеса прост и ефективен.
Следният фрагмент от код показва как да се премахнат прикачени файлове от MSG файлове с помощта на Aspose.Email:
import aspose.email as ae
ae.mapi.MapiMessage.remove_attachments("AttachmentsToRemove_out.msg")
Можете също така да извикате статичния метод destroy_attachments на MapiMessage клас. Работи по-бързо от remove_attachments, защото методът remove_attachments анализира файла с съобщението.
import aspose.email as ae
# Destroy attachments in the MapiMessage
ae.mapi.MapiMessage.destroy_attachments("AttachmentsToDestroy_out.msg")
Добавяне на MSG прикачени файлове
Outlook съобщението може да съдържа други Microsoft Outlook съобщения като прикачени файлове, както обикновени, така и вложени. MapiAttachmentCollection предоставя претоварени членове на добави метод за създаване на Outlook съобщения с двата вида прикачени файлове.
Try it out!
Добавяйте или премахвайте имейл прикачени файлове онлайн с безплатния Aspose.Email Editor App.
Добавяне на референтни прикачени файлове към MAPI съобщения
Референтен прикачен файл обикновено се отнася до прикачен файл, който съдържа препратка или линк към външен ресурс, а не самия файл. Тези препратки често се използват в HTML имейли за линк към външни изображения или ресурси, хоствани на отдалечен сървър. Вместо да се вгражда целият файл, референтният прикачен файл включва URL или препратка към външното съдържание.
За да добавите референтен прикачен файл към MAPI съобщение, използвайте add метод на MapiAttachmentCollection клас и ReferenceAttachmentOptions клас за указване:
-
URL на съдържанието (директен линк към файла)
-
URL на доставчика (линк към местоположението на файла или UI изгледа)
-
Името на доставчика на прикачени файлове (например "GoogleDrive")
както е показано в примерния код по-долу.
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")
Вграждане на съобщения като прикачени файлове
Следният фрагмент от код демонстрира как да вградите Outlook MSG файлове като прикачени файлове в друг MSG файл. Вграден MSG файл включва свойството PR_ATTACH_METHOD със стойност 5, което указва, че това е прикачен файл от тип "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")
Четене на вградени съобщения от прикачени файлове
Следният фрагмент от код показва как да прочетете вградени съобщения от прикачени файлове.
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
# ...
Вмъкване и замяна на прикачени файлове
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 в колекция, която съдържа само 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)
Преименуване на прикачени файлове в MapiMessages
С Aspose.Email можете лесно да промените показваните имена на прикачени файлове в имейл съобщения, заредени от файл. Следният примерен код демонстрира как да постигнете това:
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"