Керування прикріпленнями в Outlook повідомленнях
The Створення та збереження 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 повідомлень з обома типами прикріплень.
Спробуйте!
Додавайте або видаляйте вкладення електронної пошти онлайн за допомогою безкоштовного Aspose.Email Editor App.
Додати референс‑прикріплення до MAPI повідомлень
Reference attachment зазвичай означає прикріплення, що містить посилання на зовнішній ресурс, а не сам файл. Такі посилання часто використовуються в HTML‑листі для зв’язку з зовнішніми зображеннями або ресурсами, розміщеними на віддаленому сервері. Замість вбудовування всього файлу, референс‑прикріплення включає URL або посилання на зовнішній вміст.
Щоб додати референс‑прикріплення до MAPI повідомлення, використайте add метод MapiAttachmentCollection class та ReferenceAttachmentOptions клас для вказання:
-
URL вмісту (пряме посилання на файл)
-
URL провайдера (посилання на розташування файлу або інтерфейс користувача)
-
Назва провайдера прикріплень (наприклад, "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"