Mengelola File Pesan dengan Aspose.Email.Outlook

Mengonversi MSG ke Pesan MIME

API Aspose.Email menyediakan kemampuan untuk mengonversi file MSG menjadi pesan MIME menggunakan toMailMessage metode.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
MapiMessage msg = new MapiMessage(
                            "sender@test.com",
                            "recipient1@test.com; recipient2@test.com",
                            "Test Subject",
                            "This is a body of message.");
MailConversionOptions options = new MailConversionOptions();
options.setConvertAsTnef(true);
MailMessage mail = msg.toMailMessage(options);

Mengonversi MSG ke EML dengan Mempertahankan Badan RTF

API menyediakan metode berikut untuk mempertahankan badan RTF saat mengonversi MSG ke EML:

Contoh kode berikut menunjukkan cara mempertahankan badan rtf dalam MailMessage:

MsgLoadOptions options = new MsgLoadOptions();
options.setPreserveRtfContent(true);
MailMessage message = MailMessage.load("fileName", options);
MapiMessage mapi = MapiMessage.load("fileName");
MailConversionOptions options = new MailConversionOptions();
options.setPreserveRtfContent(true);
MailMessage message = mapi.toMailMessage(options);

Mengonversi MSG ke MHTML dengan Mempertahankan Header Kategori

API Aspose.Email menyediakan kemampuan untuk menambahkan header kategori saat mengonversi pesan ke MHTML. Fitur ini ditentukan oleh MhtSaveOptions kelas sebagai opsi tambahan saat menyimpan MailMessage ke format Mhtml.

Contoh kode berikut menunjukkan cara membuat file MHT (MHTML) dari objek MapiMessage, menyesuaikan pemformatan dan header file MHT menggunakan MhtSaveOptions, menetapkan kategori untuk pesan email, lalu memodifikasi templat format dan header rendering untuk file MHT sebelum menyimpannya.

 MapiMessage msg = new MapiMessage("from@aaa.com", "to@aaa.com", "subj", "body");

msg.setCategories(new String[] { "Urgently", "Important" });

MhtSaveOptions saveOptions = new MhtSaveOptions();

saveOptions.getFormatTemplates().set_Item(MhtTemplateName.CATEGORIES,

    saveOptions.getFormatTemplates().get_Item(MhtTemplateName.CATEGORIES).replace("Categories", "Les catégories"));

saveOptions.getRenderingHeaders().add(MhtTemplateName.CATEGORIES);

msg.save("fileName.mhtml", saveOptions);

Membaca dan Menulis File Templat Outlook (.OFT)

Templat Outlook sangat berguna ketika Anda ingin mengirim pesan email serupa berulang kali. Alih-alih menyiapkan pesan dari awal setiap kali, pertama, siapkan pesan di Outlook dan simpan sebagai Templat Outlook (OFT). Setelah itu, kapanpun Anda perlu mengirim pesan, Anda dapat membuatnya dari templat, menghemat waktu menulis teks yang sama di isi atau baris subjek, mengatur pemformatan, dan sebagainya. Aspose.Email MailMessage kelas dapat digunakan untuk memuat dan membaca file templat Outlook (OFT). Setelah templat Outlook dimuat dalam sebuah instance dari MailMessage kelas, Anda dapat memperbarui pengirim, penerima, isi, subjek, dan properti lain. Setelah memperbarui properti:

  • Kirim email menggunakan SmtpClient kelas atau
  • Simpan pesan sebagai MSG dan lakukan pembaruan/validasi lebih lanjut menggunakan Microsoft Outlook.

Dalam contoh kode di bawah, kami:

  1. Muat templat menggunakan MailMessage kelas.
  2. Perbarui beberapa properti.
  3. Simpan pesan dalam format MSG.

Cuplikan kode berikut menunjukkan cara memuat file OFT, memperbarui pesan, dan menyimpannya dalam format MSG.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// The path to the File directory.
String dataDir = "outlook/";

// Load the Outlook template (OFT) file in MailMessage's instance
MailMessage message = MailMessage.load(dataDir + "sample.oft", new MsgLoadOptions());

// Set the sender and recipients information
String senderDisplayName = "John";
String senderEmailAddress = "john@abc.com";
String recipientDisplayName = "William";
String recipientEmailAddress = "william@xzy.com";

message.setSender(new MailAddress(senderEmailAddress, senderDisplayName));
message.getTo().addMailAddress(new MailAddress(recipientEmailAddress, recipientDisplayName));
message.setHtmlBody(message.getHtmlBody().replace("DisplayName", "<b>" + recipientDisplayName + "</b>"));

// Set the name, location and time in email body
String meetingLocation = "<u>" + "Hall 1, Convention Center, New York, USA" + "</u>";
String meetingTime = "<u>" + "Monday, June 28, 2010" + "</u>";
message.setHtmlBody(message.getHtmlBody().replace("MeetingPlace", meetingLocation));
message.setHtmlBody(message.getHtmlBody().replace("MeetingTime", meetingTime));

// Save the message in MSG format and open in Office Outlook
MapiMessage mapimessage = MapiMessage.fromMailMessage(message);
mapimessage.setMessageFlags(MapiMessageFlags.MSGFLAG_UNSENT);
mapimessage.save(dataDir + "ReadAndWritingOutlookTemplateFile_out.msg");

Menyimpan File MSG Outlook sebagai Templat

Cuplikan kode berikut menunjukkan cara menyimpan file MSG Outlook sebagai templat.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// The path to the File directory.
String dataDir = "outlook/";

try (MapiMessage mapi = new MapiMessage("test@from.to", "test@to.to", "template subject", "Template body")) {
    mapi.saveAsTemplate(dataDir + "mapiToOft.msg");
}

Menetapkan Kategori Warna untuk File MSG Outlook

Kategori warna menandai pesan email untuk pentingnya atau kategorinya. Microsoft Outlook memungkinkan pengguna menugaskan kategori warna untuk membedakan email. Untuk menangani kategori warna, gunakan FollowUpManager. Berisi fungsi-fungsi seperti addCategory, removeCategory, clearCategories dan getCategories.

  • addCategory mengambil MapiMessage dan string kategori warna, misalnya "Kategori Ungu" atau "Kategori Merah" sebagai argumen.
  • removeCategory mengambil MapiMessage dan string kategori warna yang akan dihapus dari pesan.
  • clearCategories digunakan untuk menghapus semua kategori warna dari pesan.
  • getCategories digunakan untuk mengambil semua kategori warna dari pesan tertentu.

Contoh berikut melakukan tugas-tugas seperti yang diberikan di bawah:

  1. Tambahkan kategori warna.
  2. Tambahkan kategori warna lain.
  3. Ambil daftar semua kategori.
  4. Hapus semua kategori.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// The path to the File directory.
String dataDir = "outlook/";

MapiMessage msg = MapiMessage.fromFile(dataDir + "message.msg");

// Add Two category
FollowUpManager.addCategory(msg, "Purple Category");
FollowUpManager.addCategory(msg, "Red Category");

// Retrieve the list of available categories
IList categories = FollowUpManager.getCategories(msg);

// Remove the specified category and then Clear all categories
FollowUpManager.removeCategory(msg, "Red Category");
FollowUpManager.clearCategories(msg);

Mengakses Informasi Tindak Lanjut dari File MSG

API Aspose.Email menyediakan kemampuan untuk mengakses informasi tindak lanjut dari pesan yang dikirim atau diterima. Ia dapat mengambil informasi Baca, Tanda Terima Baca Pengiriman, dan hasil voting dari file pesan.

Mengambil Informasi Tanda Terima Baca dan Pengiriman

Cuplikan kode berikut menunjukkan cara mengambil informasi tanda terima baca dan pengiriman.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// The path to the File directory.
String dataDir = "outlook/";

MapiMessage msg = MapiMessage.fromFile(dataDir + "message.msg");
for (MapiRecipient recipient : msg.getRecipients()) {
    System.out.println("Recipient: " + recipient.getDisplayName());

    // Get the PR_RECIPIENT_TRACKSTATUS_TIME_DELIVERY property
    System.out.println("Delivery time: " + recipient.getProperties().get_Item(MapiPropertyTag.PR_RECIPIENT_TRACKSTATUS_TIME_DELIVERY).getDateTime());

    // Get the PR_RECIPIENT_TRACKSTATUS_TIME_READ property
    System.out.println("Read time" + recipient.getProperties().get_Item(MapiPropertyTag.PR_RECIPIENT_TRACKSTATUS_TIME_READ).getDateTime());
}

Membuat Pesan Forward dan Reply

Aspose.Email API menyediakan kemampuan untuk membuat dan memformat pesan forward dan reply. Metode ReplyMessageBuilder dan ForwardMessageBuilder class API digunakan untuk membuat pesan Reply dan Forward masing-masing. Pesan Reply atau Forward dapat ditentukan untuk dibuat menggunakan salah satu mode dari OriginalMessageAdditionMode enum. Enum ini memiliki nilai-nilai berikut:

  • OriginalMessageAdditionMode.None - Pesan asli tidak disertakan dalam pesan respons.
  • OriginalMessageAdditionMode.Attachment - Pesan asli disertakan sebagai lampiran dalam pesan respons
  • OriginalMessageAdditionMode.Textpart - Pesan asli disertakan sebagai teks dalam tubuh pesan respons

Membuat Pesan Balasan

Potongan kode berikut menunjukkan cara membuat pesan balasan.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// The path to the File directory.
String dataDir = "outlook/";

MapiMessage originalMsg = MapiMessage.fromFile(dataDir + "message1.msg");
ReplyMessageBuilder builder = new ReplyMessageBuilder();

// Set ReplyMessageBuilder Properties
builder.setReplyAll(true);
builder.setAdditionMode(OriginalMessageAdditionMode.Textpart);
builder.setResponseText(
        "<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>");

MapiMessage replyMsg = builder.buildResponse(originalMsg);
replyMsg.save(dataDir + "reply_out.msg");

Membuat Pesan Forward

Potongan kode berikut menunjukkan cara membuat pesan forward.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// The path to the File directory.
String dataDir = "outlook/";

MapiMessage originalMsg = MapiMessage.fromFile(dataDir + "message1.msg");
ForwardMessageBuilder builder = new ForwardMessageBuilder();
builder.setAdditionMode(OriginalMessageAdditionMode.Textpart);
MapiMessage forwardMsg = builder.buildResponse(originalMsg);
forwardMsg.save(dataDir + "forward_out.msg");

Pertahankan Tanggal Kosong saat Mengonversi Pesan

MapiConversionOptions.setPreserveEmptyDates(boolean) properti yang menunjukkan apakah perlu mempertahankan tanggal kosong saat mengonversi sebuah pesan. API ini muncul di Aspose.Email 21.5. Potongan kode berikut menunjukkan cara mempertahankan tanggal kosong.

MailMessage mailMessage = MailMessage.load("message.eml");
System.out.println(mailMessage.getDate()); // zero date
MapiConversionOptions mco = MapiConversionOptions.getUnicodeFormat();
// keep empty dates when converting a message
mco.setPreserveEmptyDates(true);
MapiMessage mapiMessage = MapiMessage.fromMailMessage(mailMessage, mco);
System.out.println(mapiMessage.getClientSubmitTime()); // zero date
// check zero date
if (mapiMessage.getClientSubmitTime().equals(JavaHelper.ZERO_DATE))
    System.out.println("ZERO DATE");