Bekerja dengan Lampiran Pesan

Mengelola Lampiran dengan Aspose Outlook

Membuat dan Menyimpan File Pesan Outlook (MSG) menjelaskan cara membuat dan menyimpan pesan, serta cara membuat file MSG dengan lampiran. Artikel ini menjelaskan cara mengelola lampiran Microsoft Outlook dengan Aspose.Email. Lampiran dari file pesan diakses dan disimpan ke disk menggunakan properti Attachments pada kelas MapiMessage. Properti Attachments adalah koleksi tipe kelas MapiAttachmentCollection.

Periksa apakah Lampiran adalah Inline atau Reguler

"Inline" dan "Regular" lampiran merujuk pada cara mereka dimasukkan ke dalam pesan email. Lampiran Regular adalah file yang dilampirkan secara tradisional. Mereka biasanya ditampilkan dalam daftar di dalam klien email dan dapat diunduh oleh penerima serta disimpan ke penyimpanan lokal. Lampiran Inline, juga dikenal sebagai gambar tersemat atau inline, biasanya digunakan untuk menyertakan gambar atau media lain di dalam isi email. Mereka tidak ditampilkan dalam daftar terpisah, melainkan langsung muncul dalam konten email, seperti di badan email. Ini memungkinkan Anda menyertakan gambar atau media lain yang merupakan bagian dari konten pesan. Potongan kode di bawah ini memperlihatkan cara menentukan apakah sebuah lampiran bersifat inline atau 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}")

Simpan Lampiran dari File Pesan Outlook (MSG)

Untuk menyimpan lampiran dari file MSG:

  1. Iterasikan koleksi MapiAttachmentCollection dan dapatkan lampiran individu.
  2. Untuk menyimpan lampiran, panggil metode Save() pada kelas MapiAttachment.

Potongan kode berikut menunjukkan cara menyimpan lampiran ke disk lokal.

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)

Mendapatkan Lampiran Pesan Email Bersarang

Lampiran OLE yang tersemat juga muncul dalam koleksi Attachment kelas MapiMessage. Contoh kode berikut mem-parsing file pesan untuk lampiran pesan tersemat dan menyimpannya ke disk. Metode statis FromProperties() pada kelas MapiMessage dapat membuat pesan baru dari lampiran tersemat. Potongan kode berikut menunjukkan cara mendapatkan lampiran pesan email bersarang.

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)

Menghapus Lampiran

Perpustakaan Aspose Outlook menyediakan fungsionalitas untuk menghapus lampiran dari file Microsoft Outlook Message (.msg):

  • Panggil metode RemoveAttachments(). Metode ini menerima path file pesan sebagai parameter. Ia diimplementasikan sebagai metode statis publik, sehingga Anda tidak perlu membuat instance objek.

Potongan kode berikut menunjukkan cara menghapus Lampiran.

import aspose.email as ae

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

Anda juga dapat memanggil metode statis DestoryAttachment() pada kelas MapiMessage. Metode ini bekerja lebih cepat dibandingkan RemoveAttachment(), karena metode RemoveAttachment() mem-parsing file pesan.

import aspose.email as ae

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

Menambahkan Lampiran MSG

Pesan Outlook dapat berisi pesan Microsoft Outlook lain sebagai lampiran, baik sebagai pesan reguler maupun tersemat. MapiAttachmentCollection menyediakan overload metode Add untuk membuat pesan Outlook dengan kedua jenis lampiran tersebut.

Tambahkan Lampiran Referensi ke MapiMessage

"Lampiran referensi" biasanya merujuk pada lampiran yang berisi referensi atau tautan ke sumber eksternal daripada file sebenarnya. Referensi ini sering digunakan dalam email HTML untuk menautkan ke gambar atau sumber eksternal yang dihosting di server remote. Alih-alih menyematkan seluruh file, lampiran referensi menyertakan URL atau referensi ke konten eksternal.

Aspose.Email menyediakan serangkaian alat untuk menampilkan lampiran referensi yang tepat seperti yang ditunjukkan dalam contoh kode berikut:

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

Menyematkan Pesan sebagai Lampiran

Potongan kode berikut menunjukkan cara Outlook MSG yang tersemat dalam file MSG mengandung PR_ATTACH_METHOD dengan nilai 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")

Membaca Pesan Tersemat dari Lampiran

Potongan kode berikut menunjukkan cara membaca pesan tersemat dari lampiran.

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

Penyisipan dan Penggantian Lampiran

API Aspose.Email menyediakan kemampuan untuk menyisipkan lampiran pada indeks tertentu dalam pesan induk. Ia juga menyediakan fasilitas untuk mengganti konten sebuah lampiran dengan lampiran pesan lain. Potongan kode berikut menunjukkan cara Penyisipan dan Penggantian Lampiran.

Sisipkan pada Lokasi Tertentu

API Aspose.Email menyediakan kemampuan untuk menyisipkan lampiran MSG ke MSG induk menggunakan metode Insert pada MapiAttachmentCollection: MapiAttachmentCollection Insert(int index, string name, MapiMessage msg). Potongan kode berikut menunjukkan cara menyisipkan pada lokasi tertentu.

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)

Mengganti Isi Lampiran

Ini dapat digunakan untuk mengganti konten lampiran tersemat dengan yang baru menggunakan metode Replace. Namun, tidak dapat digunakan untuk menyisipkan lampiran dengan PR_ATTACH_NUM = 4 (misalnya) ke dalam koleksi dengan collection.Count = 2. Potongan kode berikut menunjukkan cara mengganti konten lampiran.

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)

Ganti Nama Lampiran dalam MapiMessage

Dimungkinkan untuk mengubah nama tampilan lampiran dalam pesan email yang dimuat dari file. Contoh kode di bawah menunjukkan cara melakukannya:

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"