مدیریت فایل‌های پیام با Aspose.Email.Outlook

تعیین نوع آیتم MAPI در پوشه PST

فایل PST معمولاً انواع مختلف داده‌ها مانند پیام‌های ایمیل، رویدادهای تقویم، مخاطبان و غیره را شامل می‌شود. MapiItemType کلاس Aspose.Email به شما امکان می‌دهد انواع مختلفی از موارد MAPI را در یک فایل PST دسترسی و دسته‌بندی کنید. کد زیر نشان می‌دهد چگونه نوع یک مورد MAPI در یک پوشه PST را تعیین کنید:

import aspose.email as ae

pst = ae.storage.pst.PersonalStorage.from_file("test.pst")
folder = pst.root_folder.get_sub_folder("Calendar")
for messageInfo in folder.enumerate_messages():
    msg = pst.extract_message(messageInfo)

    # Get the class type based on msg.SupportedType
    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 = 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 = 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 = 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 = 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 = 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 = msg.to_mapi_message_item()
        # You can access to MapiTask properties there

تبدیل MSG به پیام MIME

API Aspose.Email امکان تبدیل فایل MSG به پیام MIME را با استفاده از متد ToMailMessage فراهم می‌کند.

تنظیم زمان‌انقضا برای تبدیل و بارگذاری یک پیام

برای محدود کردن زمان تبدیل پیام به میلی‌ثانیه (مقدار پیش‌فرض ۳ ثانیه)، ویژگی timeout از MailConversionOptions کلاس استفاده می‌شود.

در اینجا نحوه تنظیم زمان‌انتظار برای فرایندهای تبدیل و بارگذاری پیام آورده شده است:

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 (OFT)

بارگذاری، ویرایش و ذخیره یک فایل OFT

قالب‌های Outlook (OFT) روشی مناسب برای ساده‌سازی فرآیند ارسال پیام‌های ایمیل تکراری ارائه می‌دهند. به‌جای نوشتن هر بار یک ایمیل مشابه، می‌توانید یک پیام در Outlook ایجاد کرده و به‌عنوان قالب Outlook (OFT) ذخیره کنید. سپس هر زمان که نیاز به ارسال پیام مشابه داشتید، می‌توانید به‌سرعت از قالب تولید کنید. این روش از بازنویسی مکرر محتوا، موضوع، قالب‌بندی و غیره جلوگیری می‌کند.

Aspose.Email MailMessage کلاس ابزار قدرتمندی برای بارگذاری و دستکاری فایل‌های قالب Outlook (OFT) فراهم می‌کند. پس از بارگذاری یک قالب Outlook در یک نمونه از کلاس MailMessage، می‌توانید به راحتی ویژگی‌هایی مانند فرستنده، گیرنده، بدنه پیام، موضوع و سایر ویژگی‌ها را به‌روز کنید.

import aspose.email as ae

# Load the OFT file
oft_file_path = "your_template.oft"
mail_message = ae.MailMessage.load(oft_file_path)

# Update properties as needed
mail_message.subject = "Updated Subject"
mail_message.body = "Updated body text."

# Save the updated message as an MSG file
msg_file_path = "updated_message.msg"
mail_message.save(msg_file_path, ae.MailMessageSaveType.outlook_message_format_unicode)

print(f"Updated message saved to {msg_file_path}")

بعد از اعمال به‌روزرسانی‌های لازم، می‌توانید ایمیل را با استفاده از SmtpClient کلاس:

# Send the email
smtpClient.send(message)

ذخیره فایل MSG آوتلوک به‌عنوان قالب

برای این منظور، می‌توانید از MailMessage کلاس برای ایجاد یک ایمیل، سپس ذخیره آن به‌عنوان فایل OFT. نمونه کد زیر نشان می‌دهد چگونه یک ایمیل را به قالب Outlook ذخیره کنید:

import aspose.email as ae

# Create a new MailMessage
message = ae.MailMessage()
message.subject = "Sample Outlook Template"
message.html_body = "<html><body>This is the body of the email.</body></html>"
message.from_address = ae.MailAddress("your.email@example.com", "Your Name")

# Save the MailMessage as an Outlook Template (OFT) file
oft_file_path = "sample_template.oft"
message.save(oft_file_path, ae.SaveOptions.default_oft)

print(f"Outlook Template saved as {oft_file_path}")

OFT یا MSG: تعیین نوع یک MapiMessage

قطعه کد زیر نشان می‌دهد چگونه تعیین کنیم آیا یک پیام MAPI بارگذاری شده نمایانگر یک ایمیل استاندارد است یا یک قالب Outlook (OFT):

msg = ae.mapi.MapiMessage.Load("message.msg");
isOft = msg.is_template # returns false

msg = ae.mapi.MapiMessage.Load("message.oft");
isOft = msg.IsTemplate; # returns true

پس از بارگذاری فایل MSG، کد بررسی می‌کند آیا ویژگی is_template از MapiMessaage کلاس True یا False است. اگر false برگرداند، پیام بارگذاری‌شده یک پیام ایمیل استاندارد است، نه یک قالب Outlook؛ در غیر این صورت، اگر true برگرداند، پیام یک قالب Outlook است نه یک ایمیل استاندارد.

ذخیره MapiMessage یا MailMessage به‌عنوان OFT

این SaveOptions یک کلاس پایهٔ انتزاعی برای کلاس‌هایی است که به کاربر امکان می‌دهد گزینه‌های اضافی را هنگام ذخیره MailMessage به یک فرمت خاص مشخص کند. نمونه کد زیر نشان می‌دهد چگونه یک پیام را به فرمت OFT ذخیره کنید:

import aspose.email as ae

# Save the MailMessage to OFT format
eml = ae.MailMessage.load("message.eml")

eml.save("message.oft", ae.SaveOptions.default_oft)

# or alternative way 2
save_options = ae.MsgSaveOptions(ae.MailMessageSaveType.outlook_template_format)
eml.save("message.oft", save_options)

# or alternative way 3
save_options = ae.SaveOptions.create_save_options(ae.MailMessageSaveType.outlook_template_format)
eml.save("message.oft", save_options)

# Save the MapiMessage to OFT format
msg = ae.mapi.MapiMessage.load("message.msg")

msg.save("message.oft", ae.SaveOptions.default_oft)

# or alternative way 2
save_options = ae.MsgSaveOptions(ae.MailMessageSaveType.outlook_template_format)
msg.save("message.oft", save_options)

# or alternative way 3
save_options = ae.SaveOptions.create_save_options(ae.MailMessageSaveType.outlook_template_format)
msg.save("message.oft", save_options)

مدیریت پیام‌ها با امضای دیجیتال

کتابخانه ارائه می‌دهد LoadOptions کلاس، یک کلاس پایهٔ انتزاعی برای کلاس‌هایی که به کاربر اجازه می‌دهد گزینه‌های اضافی را هنگام بارگذاری MailMessage از یک فرمت خاص مشخص کند. گزینهٔ حفظ امضا به‌طور پیش‌فرض تنظیم شده است.

تبدیل از EML به MSG با حفظ امضا

نمونه کد زیر نشان می‌دهد چگونه پیامی را بارگذاری کنید، به فرمت MSG تبدیل کرده و به عنوان MSG ذخیره کنید (امضا به‌صورت پیش‌فرض حفظ می‌شود):


import aspose.email as ae

# Load mail message
loadOptions = ae.EmlLoadOptions()
message = ae.MailMessage.load("Message.eml", loadOptions)
# Save as MSG
message.save("ConvertEMLToMSG_out.msg", ae.SaveOptions.default_msg_unicode)

تبدیل پیام‌های S/MIME از MSG به EML

Aspose.Email به شما امکان تبدیل از MSG به EML را با حفظ امضای دیجیتال همان‌طور که در قطعه کد زیر نشان داده شده، می‌دهد.

import aspose.email as ae

# Load mail message
loadOptions = ae.EmlLoadOptions()
smime_eml = ae.MailMessage.load("smime.eml", loadOptions)

conversion_options = ae.mapi.MapiConversionOptions(ae.mapi.OutlookMessageFormat.UNICODE)
msg = ae.mapi.MapiMessage.from_mail_message(smime_eml, conversion_options)
# Save File to disk
msg.save("ConvertMIMEMessagesFromMSGToEML_out.msg")

تنظیم دسته‌بندی رنگ برای فایل‌های Outlook MSG

گاهی ممکن است نیاز داشته باشید ایمیل‌های دارای اهمیتی خاص را متمایز کنید و به‌صورت بصری سازماندهی کنید. این کتابخانه روشی برای این کار فراهم می‌کند که با اختصاص یک رنگ خاص به آیتم پیام. وقتی یک دسته‌بندی رنگ برای یک آیتم تنظیم می‌شود، به راحتی می‌توانید آیتم‌های مرتبط را در یک نگاه شناسایی کنید. استفاده کنید FollowUpManager کلاس برای تنظیم دسته‌بندی رنگی یک پیام همان‌طور که در مثال کد زیر آمده است:


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)

دسترسی به اطلاعات Follow Up از فایل MSG

استخراج اطلاعات خواندن و رسید تحویل

نمونه کد زیر نشان می‌دهد چگونه اطلاعات گیرندگان و وضعیت ردیابی آن‌ها را از یک پیام Outlook (MSG) استخراج کنید:

import aspose.email as ae

msg = ae.mapi.MapiMessage.load("received.msg")

for recipient in msg.recipients:
    print(f"Recipient: {recipient.display_name}")
    print(f"Delivery time:  {recipient.properties[ae.mapi.MapiPropertyTag.RECIPIENT_TRACKSTATUS_TIME_DELIVERY]}")
    print(f"Read time:  {recipient.properties[ae.mapi.MapiPropertyTag.RECIPIENT_TRACKSTATUS_TIME_READ]}")

ایجاد پیام‌های Forward و Reply

Aspose.Email روش‌های ساده‌ای برای ایجاد پیام‌های فوروارد و پاسخ بر پایه پیام‌های موجود فراهم می‌کند.

ایجاد پیام Forward

می‌توانید از ForwardMessageBuilder کلاس برای ایجاد یک پیام فوروارد با تنظیم پیام منبع، فرستنده، گیرندگان، موضوع و بدنه استفاده می‌شود. پیام‌های فوروارد می‌توانند پیام اصلی را به‌عنوان پیوست یا به‌عنوان بدنهٔ پیام فوروارد شامل کنند. شما انعطاف‌پذیری سفارشی‌سازی ویژگی‌های اضافی مانند پیوست‌ها، سرصفحه‌ها و گزینه‌های قالب‌بندی را دارید. نمونه کد زیر نشان می‌دهد چگونه یک پیام فوروارد ایجاد کنید:


import aspose.email as ae

msg = ae.mapi.MapiMessage.load("original.msg")

builder = ae.tools.ForwardMessageBuilder()
builder.addition_mode = ae.tools.OriginalMessageAdditionMode.TEXTPART

forwardMsg = builder.build_response(msg)
forwardMsg.save("forward_out.msg")

ایجاد پیام پاسخ

این ReplyMessageBuilder کلاس برای پیکربندی تنظیمات پاسخ استفاده می‌شود، شامل پیام مبدا، فرستنده، گیرندگان، حالت پاسخ، پیشوند موضوع و بدنه پیام پاسخ. پیام‌های پاسخ می‌توانند در حالت‌های مختلفی مانند «پاسخ به فرستنده» یا «پاسخ به همه» بسته به نیاز شما ایجاد شوند. می‌توانید ویژگی‌های مختلفی مانند پیوست‌ها، سرصفحه‌ها و گزینه‌های قالب‌بندی را برای پیام پاسخ سفارشی کنید. نمونه کد زیر نحوه ایجاد یک پیام فوروارد را نشان می‌دهد:

import aspose.email as ae

msg = ae.mapi.MapiMessage.load("original.msg")

builder = ae.tools.ReplyMessageBuilder()

# Set ReplyMessageBuilder Properties
builder.reply_all = True
builder.addition_mode = ae.tools.OriginalMessageAdditionMode.TEXTPART
builder.response_text = "<p><b>Dear Friend,</b></p> I want to do is introduce my co-author and co-teacher. <p><a href=\"www.google.com\">This is a first link</a></p><p><a href=\"www.google.com\">This is a second link</a></p>";

replyMsg = builder.build_response(msg)
replyMsg.save("reply_out.msg")