إدارة ملفات الرسائل باستخدام Aspose.Email.Outlook
تحويل MSG إلى رسالة MIME
توفر واجهة 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
توفر الواجهة البرمجية الطرق التالية للحفاظ على جسم RTF أثناء تحويل MSG إلى EML:
- MsgLoadOptions.PreserveRtfContent - يحصل أو يعيّن قيمة تشير إلى ما إذا كان يجب الحفاظ على جسم rtf في MailMessage.
- MailConversionOptions.PreserveRtfContent - يحصل أو يعيّن قيمة تشير إلى ما إذا كان يجب الحفاظ على جسم rtf في MailMessage.
تظهر العينات البرمجية التالية كيفية الحفاظ على جسم rtf في MailMessage:
- باستخدام MsgLoadOptions.PreserveRtfContent
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 مع الحفاظ على رأس الفئة
توفر واجهة 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);
قراءة وكتابة ملف قالب Outlook (.OFT)
تعد قوالب Outlook مفيدة جدًا عندما ترغب في إرسال رسالة بريد إلكتروني مشابهة مرارًا وتكرارًا. بدلاً من إعداد الرسالة من الصفر في كل مرة، قم أولاً بإعداد الرسالة في Outlook واحفظها كقالب Outlook (OFT). بعد ذلك، كلما احتجت لإرسال الرسالة، يمكنك إنشائها من القالب، مما يوفر الوقت في كتابة النص نفسه في النص أو عنوان الموضوع، وتعيين التنسيق وما إلى ذلك. Aspose.Email MailMessage يمكن استخدام الفئة لتحميل وقراءة ملف قالب Outlook (OFT). بمجرد تحميل قالب Outlook في نسخة من الـ MailMessage فئة، يمكنك تحديث المرسل، المستقبل، النص، الموضوع وغيرها من الخصائص. بعد تحديث الخصائص:
- إرسال البريد الإلكتروني باستخدام الـ SmtpClient فئة أو
- حفظ الرسالة بصيغة MSG وإجراء مزيد من التحديثات/التحقق باستخدام Microsoft Outlook.
في العينات البرمجية أدناه، نقوم بـ:
- تحميل القالب باستخدام الـ MailMessage فئة.
- تحديث بعض الخصائص.
- حفظ الرسالة بصيغة 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");
حفظ ملف Outlook MSG كقالب
يوضح لك المقتطف البرمجي التالي كيفية حفظ ملف Outlook 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");
}
تعيين فئة اللون لملفات Outlook MSG
تُحدد فئة اللون رسالة البريد الإلكتروني لأهمية أو فئة معينة. يتيح Microsoft Outlook للمستخدمين تعيين فئات لون للتمييز بين الرسائل. للتعامل مع فئة اللون، استخدم الـ FollowUpManager. يحتوي على وظائف مثل addCategory, removeCategory, clearCategories و getCategories.
- addCategory تأخذ MapiMessage وسلسلة فئة اللون، على سبيل المثال "فئة بنفسجية" أو "فئة حمراء" كوسائط.
- removeCategory تأخذ MapiMessage وسلسلة فئة اللون التي يجب إزالتها من الرسالة.
- clearCategories يُستخدم لإزالة جميع فئات الألوان من الرسالة.
- getCategories يُستخدم لاسترداد جميع فئات الألوان من رسالة معينة.
المثال التالي ينفذ المهام كما هو موضح أدناه:
- إضافة فئة لون.
- إضافة فئة لون أخرى.
- استرجاع قائمة بجميع الفئات.
- إزالة جميع الفئات.
// 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
توفر واجهة برمجة تطبيقات 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());
}
إنشاء رسائل التحويل والرد
توفر Aspose.Email API القدرة على إنشاء وتنسيق رسائل التحويل والرد. الـ ReplyMessageBuilder و ForwardMessageBuilder تُستخدم فئات الـ API لإنشاء رسائل الرد والتحويل على التوالي. يمكن تحديد إنشاء رسالة رد أو تحويل باستخدام أي من أوضاع OriginalMessageAdditionMode enum. يحتوي هذا التعداد على القيم التالية:
- OriginalMessageAdditionMode.None - لا يتم تضمين الرسالة الأصلية في رسالة الرد.
- OriginalMessageAdditionMode.Attachment - يتم تضمين الرسالة الأصلية كمرفق في رسالة الرد
- OriginalMessageAdditionMode.Textpart - يتم تضمين الرسالة الأصلية كنص في جسم رسالة الرد
إنشاء رسالة رد
يوضح مقتطف الكود التالي كيفية إنشاء رسالة رد.
// 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");
إنشاء رسالة تحويل
يوضح مقتطف الكود التالي كيفية إنشاء رسالة تحويل.
// 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) خاصية تشير ما إذا كان من الضروري الحفاظ على التواريخ الفارغة عند تحويل رسالة. تظهر هذه الواجهة في 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");