Mengelola File Pesan dengan Aspose.Email.Outlook

Menentukan 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

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

Mengonversi MSG ke Pesan MIME

API Aspose.Email menyediakan kemampuan mengonversi file MSG ke pesan MIME menggunakan metode ToMailMessage.

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.

Pemrosesan File Template Outlook (OFT)

Muat, Modifikasi, dan Simpan File OFT

Template Outlook (OFT) menawarkan cara yang nyaman untuk menyederhanakan proses pengiriman email berulang. Daripada membuat email yang sama dari awal setiap kali, Anda dapat membuat pesan di Outlook dan menyimpannya sebagai Template Outlook (OFT). Kemudian, kapan pun Anda perlu mengirim pesan serupa, Anda dapat dengan cepat menghasilkannya dari template. Pendekatan ini menghemat upaya menulis ulang konten yang sama dalam badan pesan, menentukan subjek, pemformatan, dll.

Aspose.Email’s MailMessage kelas menyediakan alat kuat untuk memuat dan memanipulasi file template Outlook (OFT). Setelah template Outlook dimuat ke dalam instance kelas MailMessage, Anda dapat dengan mudah memperbarui properti seperti pengirim, penerima, isi pesan, subjek, dan berbagai atribut lainnya.

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

Setelah melakukan pembaruan yang diperlukan, Anda dapat mengirim email menggunakan SmtpClient kelas:

# Send the email
smtpClient.send(message)

Menyimpan File MSG Outlook sebagai Templat

Untuk tujuan ini, Anda dapat menggunakan MailMessage kelas untuk membuat email, lalu menyimpannya sebagai file OFT. Contoh kode berikut akan menunjukkan cara menyimpan email sebagai Outlook Template:

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 atau MSG: Menentukan tipe MapiMessage

Potongan kode berikut menggambarkan cara menentukan apakah pesan MAPI yang dimuat merupakan pesan email standar atau Outlook Template (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

Setelah memuat file MSG, kode memeriksa apakah properti is_template dari MapiMessaage kelas bernilai True atau False. Jika mengembalikan false, pesan yang dimuat adalah pesan email standar, bukan Template Outlook; jika mengembalikan true, pesan tersebut bukan pesan email standar, melainkan Template Outlook.

Menyimpan MapiMessage atau MailMessage sebagai OFT

The SaveOptions adalah kelas dasar abstrak untuk kelas yang memungkinkan pengguna menentukan opsi tambahan saat menyimpan MailMessage ke format tertentu. Contoh kode berikut menunjukkan cara menyimpan pesan ke format 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)

Mengelola Pesan dengan Tanda Tangan Digital

Perpustakaan menyediakan LoadOptions kelas, kelas dasar abstrak untuk kelas yang memungkinkan pengguna menentukan opsi tambahan saat memuat MailMessage dari format tertentu. Opsi mempertahankan tanda tangan diatur secara default.

Mengonversi dari EML ke MSG dengan Mempertahankan Tanda Tangan

Contoh kode di bawah ini menunjukkan cara memuat pesan, mengonversinya ke format MSG dan menyimpan sebagai MSG (tanda tangan dipertahankan secara default):


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)

Konversi Pesan S/MIME dari MSG ke EML

Aspose.Email memungkinkan Anda mengonversi dari MSG ke EML sambil mempertahankan tanda tangan digital seperti yang ditunjukkan dalam potongan kode berikut.

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

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 untuk pesan seperti pada 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)

Mengakses Informasi Tindak Lanjut dari File MSG

Mengekstrak Informasi Tanda Terima Baca dan Pengiriman

Contoh kode di bawah ini memperlihatkan cara mengekstrak informasi penerima dan status pelacakan mereka dari file pesan 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]}")

Membuat Pesan Forward dan Reply

Aspose.Email menyediakan cara sederhana untuk membuat pesan forward dan balasan berdasarkan pesan yang ada.

Membuat Pesan Forward

Anda dapat menggunakan ForwardMessageBuilder kelas untuk membuat pesan forward dengan mengatur pesan sumber, pengirim, penerima, subjek, dan isi. Pesan forward dapat menyertakan pesan asli sebagai lampiran atau sebagai isi pesan yang diteruskan. Anda memiliki fleksibilitas untuk menyesuaikan properti tambahan seperti lampiran, header, dan opsi format. Contoh kode di bawah ini menunjukkan cara membuat pesan forward:


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

Membuat Pesan Balasan

The ReplyMessageBuilder kelas digunakan untuk mengonfigurasi pengaturan balasan, termasuk pesan sumber, pengirim, penerima, mode balasan, awalan subjek, dan isi pesan balasan. Pesan balasan dapat dibuat dalam berbagai mode balasan seperti "Balas ke Pengirim" atau "Balas ke Semua" sesuai kebutuhan Anda. Anda dapat menyesuaikan berbagai properti seperti lampiran, header, dan opsi format untuk pesan balasan. Contoh kode di bawah ini menunjukkan cara membuat pesan forward:

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