עבודה עם מאפייני MAPI
קביעת סוג פריט MAPI בתיקיית PST
קובץ PST בדרך כלל מכיל סוגים שונים של נתונים, כגון הודעות דוא"ל, אירועי לוח שנה, אנשי קשר ועוד. ה‑ MapiItemType מחלקה של Aspose.Email מאפשרת לגשת ולסווג סוגים שונים של פריטי MAPI בקובץ PST. הקוד למטה מדגים כיצד לקבוע את סוג פריט MAPI בתיקיית 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
גישה וניהול תכונות MAPI
ה MapiProperty מחלקה המייצגת תכונת MAPI, הכוללת:
- שם: מחרוזת המייצגת את שם התכונה.
- תג: מספר שלם ארוך המייצג את תג התכונה.
- נתונים: מערך בתים המייצג את נתוני התכונה.
קבלת תכונת MAPI באמצעות תג תכונה
דוגמת הקוד למטה טוענת הודעת MAPI, משיגה תכונות מרכזיות כגון הנושא וקוד העמוד של האינטרנט, ומתמודדת בבטחה עם אפשרות החוסר של תכונות אלו. לקבלת תכונות MAPI:
- טען את הודעת MAPI מקובץ באמצעות ה‑ טעינה שיטה.
- השתמש ב- MapiPropertyTag מחלקה לגישה לתכונות ספציפיות מהודעת MAPI, כגון הנושא וקוד העמוד של האינטרנט.
- טיפול בתכונות חסרות.
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()))
הגדרת תכונות MAPI
קטע הקוד הבא מראה לך כיצד להגדיר תכונות MAPI.
קריאת מאפייני MAPI בשם
Aspose.Email מספקת מערך של API לעבודה עם קבצי MSG, כולל חילוץ של מאפייני MAPI בשם.
קריאת מאפייני MAPI בשם מקבצי MSG
כדי לקרוא מאפייני MAPI בשם, ניתן להשתמש ב- named_properties מאפיין של MapiMessage class. דוגמת הקוד הבאה מראה כיצד לטעון הודעה, לאחזר את כל מאפייני MAPI בשם, ולחזור על כל מאפיין כדי לבדוק את ערכו:
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}")
קריאת מאפייני MAPI בשם מקבצים מצורפים
Aspose.Email מאפשרת לקבל את כל מאפייני MAPI בשם של קובץ מצורף. דוגמת הקוד הבאה מראה כיצד לקרוא מאפייני MAPI בשם מקבצים מצורפים:
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()}")
ניהול מאפיינים
הסרת מאפיינים מקבצי MSG וקבצים מצורפים
דוגמת קוד זו למטה מדגימה יצירת הודעת Outlook MSG עם תוכן גוף וקובץ הודעה מצורף. היא גם מראה כיצד למחוק מאפיין קובץ מצורף מההודעה שנוצרה.
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}")
המרת MSG להודעת MIME
ה-API של Aspose.Email מספקת את היכולת להמיר קובץ MSG להודעת MIME באמצעות to_mail_message שיטה.
קביעת זמן קצוב להמרת הודעות ולטעינה
כדי להגביל את הזמן במילישניות של המרת ההודעה (ערך ברירת המחדל 3 שניות), המאפיין timeout של ה- MailConversionOptions class משמשת.
הנה כיצד ניתן להגדיר זמן קצוב לתהליכי המרת הודעות וטעינתן:
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)
על ידי הגדרת זמן קצוב (timeout) לתהליכי המרת הודעות וטעינתן, ניתן לשלוט בזמן המרבי שמותר לתהליכים אלו לרוץ. לאחר קביעת זמן הקצוב, ניתן להמשיך בתהליכי המרת והטעינה של ההודעות.
הגדרת קטגוריית צבע לקבצי Outlook MSG
לעיתים יתכן ותצטרכו להבדיל בין מיילים בעלי חשיבות מיוחדת ולארגן אותם ויזואלית. הספרייה מספקת דרך לעשות זאת על ידי הקצאת צבע ספציפי לפריט ההודעה. כאשר אתם מגדירים קטגוריית צבע לפריט, זה מאפשר לזהות ולאתר פריטים קשורים במבט אחד. השתמשו ב- FollowUpManager class כדי להגדיר קטגוריית צבע עבור הודעה כפי שמודגם בדוגמת הקוד הבאה:
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)