Bekerja dengan Properti MAPI
Tentukan Tipe Item MAPI dalam Folder PST
File PST biasanya berisi berbagai jenis data, seperti pesan email, acara kalender, kontak, dan lain-lain. The MapiItemType kelas Aspose.Email memungkinkan Anda mengakses dan mengkategorikan berbagai tipe item MAPI dalam file PST. Kode di bawah ini menunjukkan cara menentukan tipe item MAPI dalam folder PST:
import aspose.email as ae
import aspose.pycore as pycore
pst = ae.storage.pst.PersonalStorage.from_file("test.pst")
folder = pst.root_folder.get_sub_folder("Calendar")
for message_info in folder.enumerate_messages():
msg = pst.extract_message(message_info)
# Get the class type based on msg.supported_type
item_type = msg.supported_type
# Non-supported type. It cannot be accessed as appropriate item type.
if item_type == ae.mapi.MapiItemType.NONE:
print("Item type not supported")
# An email message.
elif item_type == ae.mapi.MapiItemType.MESSAGE:
# You can access to MapiMessage properties there.
# A subject for example
print(msg.subject)
# A contact item. Can be accessed as MapiContact.
elif item_type == ae.mapi.MapiItemType.CONTACT:
contact = pycore.cast(ae.mapi.MapiContact, msg.to_mapi_message_item())
# You can access to MapiContact properties there.
# A name_info.display_name for example.
print(contact.name_info.display_name)
# A calendar item. Can be accessed as MapiCalendar.
elif item_type == ae.mapi.MapiItemType.CALENDAR:
calendar = pycore.cast(ae.mapi.MapiCalendar, msg.to_mapi_message_item())
# You can access to MapiCalendar properties there.
# A location for example.
print(calendar.location)
# A distribution list. Can be accessed as MapiDistributionList.
elif item_type == ae.mapi.MapiItemType.DIST_LIST:
dlist = pycore.cast(ae.mapi.MapiDistributionList, msg.to_mapi_message_item())
# You can access to MapiDistributionList properties there
# A Journal entry. Can be accessed as MapiJournal.
elif item_type == ae.mapi.MapiItemType.JOURNAL:
journal = pycore.cast(ae.mapi.MapiJournal, msg.to_mapi_message_item())
# You can access to MapiJournal properties there
# A StickyNote. Can be accessed as MapiNote.
elif item_type == ae.mapi.MapiItemType.NOTE:
note = pycore.cast(ae.mapi.MapiNote, msg.to_mapi_message_item())
# You can access to MapiNote properties there
# A Task item. Can be accessed as MapiTask.
elif item_type == ae.mapi.MapiItemType.TASK:
task = pycore.cast(ae.mapi.MapiTask, msg.to_mapi_message_item())
# You can access to MapiTask properties there
Akses dan Kelola Properti MAPI
The MapiProperty kelas mewakili properti MAPI, yang berisi:
- Nama: string yang mewakili nama properti.
- Tag: integer panjang yang mewakili tag properti.
- Data: array byte yang mewakili data properti.
Dapatkan Properti MAPI Menggunakan Tag Properti
Contoh kode di bawah ini memuat pesan MAPI, mengambil properti utama seperti subjek dan halaman kode internet, serta secara aman menangani kemungkinan tidak adanya properti tersebut. Untuk mendapatkan properti MAPI:
- Muat pesan MAPI dari file menggunakan muat metode.
- Gunakan MapiPropertyTag kelas untuk mengakses properti spesifik dari pesan MAPI, seperti subjek dan halaman kode internet.
- Tangani properti yang hilang.
from aspose.email.mapi import MapiMessage, MapiPropertyTag
# Load from file
msg = MapiMessage.load("message.msg")
# Access the MapiPropertyTag.PR_SUBJECT property
prop = msg.properties[MapiPropertyTag.SUBJECT]
# If the property is not found, check the MapiPropertyTag.PR_SUBJECT_W (which is a // Unicode peer of the MapiPropertyTag.PR_SUBJECT)
if prop is None:
prop = msg.properties[MapiPropertyTag.SUBJECT_W]
# Cannot found
if prop is None:
print("No property found!")
# Get the property data as string
subject = prop.get_string()
print("Subject:" + subject)
# Read internet code page property
prop = msg.properties[MapiPropertyTag.INTERNET_CPID]
if prop is not None:
print("CodePage:" + str(prop.get_long()))
Atur Properti MAPI
Potongan kode berikut menunjukkan cara mengatur properti MAPI.
Membaca Properti MAPI Ber‑nama
Aspose.Email menyediakan serangkaian API untuk bekerja dengan file MSG, termasuk ekstraksi properti MAPI ber‑nama.
Membaca Properti MAPI Ber‑nama dari File MSG
Untuk membaca properti MAPI ber‑nama, Anda dapat menggunakan named_properties properti dari MapiMessage kelas. Contoh kode berikut memperlihatkan cara memuat sebuah pesan, mengambil semua properti MAPI ber‑nama, dan mengiterasi setiap properti untuk memeriksa nilainya:
import aspose.email as ae
msg = ae.mapi.MapiMessage.load("my.msg")
# Get all named MAPI properties
properties = msg.named_properties.values
# Read all properties in foreach loop
for prop in properties:
# Read any specific property
if prop.descriptor.canonical_name == "PidLidSideEffects":
print(f"{prop.descriptor.canonical_name} = {prop}")
if prop.descriptor.canonical_name == "PidLidInternetAccountName":
print(f"{prop.descriptor.canonical_name} = {prop}")
Membaca Properti MAPI Ber‑nama dari Lampiran
Aspose.Email memungkinkan untuk mengambil semua properti MAPI ber‑nama dari sebuah lampiran. Contoh kode berikut memperlihatkan cara membaca properti MAPI ber‑nama dari lampiran:
import aspose.email as ae
msg = ae.mapi.MapiMessage.load("my.msg")
# Get all named MAPI properties
attach_properties = msg.attachments[0].named_properties.values
# Read all properties in foreach loop
for prop in attach_properties:
# Read any specific property
if prop.descriptor.name == "AttachmentOriginalUrl":
print(f"{prop.descriptor.name} = {prop.get_string()}")
if prop.descriptor.name == "AttachmentWasSavedToCloud":
print(f"{prop.descriptor.name} = {prop.get_boolean()}")
Manajemen Properti
Menghapus Properti dari File MSG dan Lampiran
Contoh kode di bawah ini menunjukkan pembuatan pesan Outlook MSG dengan konten badan dan file pesan terlampir. Ini juga memperlihatkan cara menghapus properti lampiran dari pesan yang dibuat.
import aspose.email as ae
# create an MSG
msg = ae.mapi.MapiMessage("from@domain.com", "to@domain.com", "subject", "body")
msg.set_body_content("<html><body><h1>This is the body content</h1></body></html>", ae.mapi.BodyContentType.HTML)
# load message and add it to created MSG as attachment
attachment = ae.mapi.MapiMessage.load("attach.msg")
msg.attachments.add("Outlook2 Test subject.msg", attachment)
# count of attachment properties before removal
print(f"Before removal = {msg.attachments[0].properties.count}")
# Delete anyone attachment property
msg.attachments[0].remove_property(923467779)
# count of attachment properties after removal
print(f"After removal = {msg.attachments[0].properties.count}")
Mengonversi MSG ke Pesan MIME
Aspose.Email API menyediakan kemampuan mengonversi file MSG ke pesan MIME menggunakan to_mail_message metode.
Mengatur Batas Waktu untuk Konversi dan Pemuatan Pesan
Untuk membatasi waktu dalam milidetik pada konversi pesan (nilai default 3 detik), properti timeout dari MailConversionOptions kelas digunakan.
Berikut cara Anda dapat menetapkan batas waktu untuk proses konversi dan pemuatan pesan:
import aspose.email as ae
msg = ae.mapi.MapiMessage.load("my.msg")
options = ae.mapi.MailConversionOptions()
options.timeout = 5000
mailMessage = msg.to_mail_message(options)
Dengan menetapkan batas waktu untuk proses konversi dan pemuatan pesan, Anda dapat mengontrol waktu maksimum yang diizinkan untuk operasi tersebut berjalan. Setelah menetapkan batas waktu, Anda dapat melanjutkan proses konversi dan pemuatan pesan.
Mengatur Kategori Warna untuk File Outlook MSG
Terkadang Anda perlu membedakan email yang memiliki kepentingan khusus dan mengaturnya secara visual. Pustaka ini menyediakan cara untuk melakukannya dengan menetapkan warna tertentu pada item pesan. Ketika Anda mengatur kategori warna untuk sebuah item, hal itu memungkinkan Anda mengidentifikasi dan menemukan item terkait dengan cepat. Gunakan FollowUpManager kelas untuk mengatur kategori warna pada sebuah pesan seperti yang ditunjukkan dalam contoh kode berikut:
import aspose.email as ae
msg = ae.mapi.MapiMessage.load("my.msg")
# Add Two categories
ae.mapi.FollowUpManager.add_category(msg, "Purple Category")
ae.mapi.FollowUpManager.add_category(msg, "Red Category")
# Retrieve the list of available categories
categories = ae.mapi.FollowUpManager.get_categories(msg)
# Remove the specified category and then Clear all categories
ae.mapi.FollowUpManager.remove_category(msg, "Red Category")
ae.mapi.FollowUpManager.clear_categories(msg)