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

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

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

// 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);

تبدیل MSG به EML با حفظ بدنه RTF

API روش‌های زیر را برای حفظ بدنه RTF هنگام تبدیل MSG به EML فراهم می‌کند:

نمونه‌های کد زیر نشان می‌دهند چگونه بدنه rtf را در 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);

تبدیل MSG به MHTML با حفظ هدر دسته

API Aspose.Email امکان افزودن هدر دسته هنگام تبدیل پیام به MHTML را فراهم می‌کند. این ویژگی توسط MhtSaveOptions کلاس به‌عنوان گزینه‌ای اضافی هنگام ذخیره MailMessage به قالب Mhtml.

نمونه کد زیر نشان می‌دهد چگونه یک فایل MHT (MHTML) را از یک شیء MapiMessage ایجاد کنید، قالب‌بندی و هدرهای فایل MHT را با استفاده از MhtSaveOptions سفارشی کنید، دسته‌ها را برای پیام ایمیل تنظیم کنید و سپس قالب‌های فرمت و هدرهای رندرینگ را برای فایل MHT قبل از ذخیره‌سازی تغییر دهید.

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

خواندن و نوشتن فایل قالب آوتلوک (.OFT)

قالب‌های آوتلوک بسیار مفید هستند زمانی که می‌خواهید یک پیام ایمیل مشابه را بارها ارسال کنید. به جای تهیه پیام از صفر هر بار، ابتدا پیام را در آوتلوک آماده کرده و به‌عنوان قالب آوتلوک (OFT) ذخیره کنید. پس از آن، هر زمان که نیاز به ارسال پیام داشتید، می‌توانید آن را از قالب بسازید، باعث صرفه‌جویی در زمان نوشتن متن مشابه در بدنه یا موضوع، تنظیم فرمت و غیره می‌شود. Aspose.Email MailMessage کلاس می‌تواند برای بارگذاری و خواندن یک فایل قالب آوتلوک (OFT) استفاده شود. پس از بارگذاری قالب آوتلوک در یک نمونه از MailMessage کلاس، می‌توانید فرستنده، گیرنده، بدنه، موضوع و سایر ویژگی‌ها را به‌روزرسانی کنید. پس از به‌روزرسانی ویژگی‌ها:

  • ارسال ایمیل با استفاده از SmtpClient کلاس یا
  • ذخیره پیام به‌صورت MSG و انجام به‌روزرسانی‌ها/اعتبارسنجی‌های بیشتر با استفاده از Microsoft Outlook.

در نمونه‌های کد زیر، ما:

  1. بارگذاری قالب با استفاده از MailMessage کلاس.
  2. به‌روزرسانی برخی از ویژگی‌ها.
  3. ذخیره پیام در قالب MSG.

قطعه کد زیر نشان می‌دهد چگونه فایل OFT را بارگذاری، پیام را به‌روزرسانی و در قالب 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");

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

قطعه کد زیر نشان می‌دهد چگونه فایل 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/";

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

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

یک دسته رنگی یک پیام ایمیل را برای نوعی اهمیت یا دسته‌بندی علامت‌گذاری می‌کند. Microsoft Outlook به کاربران اجازه می‌دهد تا دسته‌های رنگی را برای تمایز ایمیل‌ها اختصاص دهند. برای مدیریت دسته رنگی، از FollowUpManager. شامل توابعی مانند addCategory, removeCategory, clearCategories و getCategories.

  • addCategory می‌گیرد MapiMessage و رشته دسته رنگی، برای مثال "دسته بنفش" یا "دسته قرمز" به عنوان آرگومان.
  • removeCategory می‌گیرد MapiMessage و رشته دسته رنگی که باید از پیام حذف شود.
  • clearCategories برای حذف تمام دسته‌های رنگی از پیام استفاده می‌شود.
  • getCategories برای بازیابی تمام دسته‌های رنگی از یک پیام خاص استفاده می‌شود.

مثال زیر کارهای زیر را انجام می‌دهد:

  1. اضافه کردن یک دسته رنگی.
  2. اضافه کردن یک دسته رنگی دیگر.
  3. دریافت لیست تمام دسته‌ها.
  4. حذف تمام دسته‌ها.
// 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);

دسترسی به اطلاعات پیگیری از فایل MSG

API Aspose.Email امکان دسترسی به اطلاعات پیگیری را از پیام ارسال‌شده یا دریافت‌شده فراهم می‌کند. می‌تواند اطلاعات دریافت، دریافت تحویل و نتایج نظرسنجی را از یک فایل پیام بازیابی کند.

بازیابی اطلاعات دریافت و تحویل رسید

قطعه کد زیر نشان می‌دهد چگونه اطلاعات دریافت و تحویل رسیدها را بازیابی کنید.

// 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());
}

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

API Aspose.Email امکان ایجاد و قالب‌بندی پیام‌های Forward و Reply را فراهم می‌کند. این ReplyMessageBuilder و ForwardMessageBuilder کلاس‌های این API به‌صورت جداگانه برای ایجاد پیام‌های Reply و Forward استفاده می‌شوند. یک پیام Reply یا Forward می‌تواند با استفاده از هر یک از حالت‌های OriginalMessageAdditionMode enum. این enum مقادیر زیر را دارد:

  • OriginalMessageAdditionMode.None - پیام اصلی در پیام پاسخ گنجانده نشده است.
  • OriginalMessageAdditionMode.Attachment - پیام اصلی به‌عنوان پیوست در پیام پاسخ گنجانده می‌شود
  • OriginalMessageAdditionMode.Textpart - پیام اصلی به‌عنوان متن در بدنهٔ پیام پاسخ گنجانده می‌شود

ایجاد پیام Reply

کد زیر نشان می‌دهد چگونه یک پیام Reply ایجاد کنید.

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

ایجاد پیام Forward

کد زیر نشان می‌دهد چگونه یک پیام 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");

حفظ تاریخ‌های خالی هنگام تبدیل پیام

MapiConversionOptions.setPreserveEmptyDates(boolean) ویژگی‌ای که نشان می‌دهد هنگام تبدیل پیام آیا نیاز به حفظ تاریخ‌های خالی است یا نه. این API در Aspose.Email 21.5 ظاهر می‌شود. کد زیر نشان می‌دهد چگونه تاریخ‌های خالی را حفظ کنید.

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