Управление файлами сообщений Outlook с помощью C++ Email Parser API

Чтение и запись файла шаблона Outlook (.OFT)

Шаблоны Outlook очень полезны, когда вы хотите отправить похожее электронное сообщение снова и снова. Вместо того чтобы каждый раз готовить сообщение с нуля, сначала подготовьте его в Outlook и сохраните как шаблон Outlook (OFT). После этого, когда вам нужно отправить сообщение, вы можете создать его из шаблона, что сэкономит время на написание одного и того же текста в теле или строке темы, настройку форматирования и так далее. Класс MailMessage из Aspose.Email может быть использован для загрузки и чтения файла шаблона Outlook (OFT). После загрузки шаблона Outlook в экземпляр класса MailMessage, вы можете обновить отправителя, получателя, тело, тему и другие свойства. После обновления свойств:

  • Отправьте электронное письмо с помощью класса SmtpClient или
  • Сохраните сообщение в формате MSG и выполните дальнейшие обновления/валидацию с помощью Microsoft Outlook.

В приведенных ниже примерах кода мы:

  1. Загружаем шаблон с помощью класса MailMessage.
  2. Обновляем некоторые свойства.
  3. Сохраняем сообщение в формате MSG.

Следующий фрагмент кода показывает, как загрузить файл OFT с помощью API C++ Email Parser Library, обновить сообщение и сохранить его в формате MSG.

For complete examples and data files, please go to https://github.com/kashifiqb/Aspose.Email-for-C
// The path to the File directory.
System::String dataDir = RunExamples::GetDataDir_Outlook();
// Load the Outlook template (OFT) file in MailMessage's instance
System::SharedPtr<MailMessage> message = MailMessage::Load(dataDir + L"sample.oft", System::MakeObject<MsgLoadOptions>());
// Set the sender and recipients information
System::String senderDisplayName = L"John";
System::String senderEmailAddress = L"john@abc.com";
System::String recipientDisplayName = L"William";
System::String recipientEmailAddress = L"william@xzy.com";
message->set_Sender(System::MakeObject<MailAddress>(senderEmailAddress, senderDisplayName));
message->get_To()->Add(System::MakeObject<MailAddress>(recipientEmailAddress, recipientDisplayName));
message->set_HtmlBody(message->get_HtmlBody().Replace(L"DisplayName", System::String(L"<b>") + recipientDisplayName + L"</b>"));
// Set the name, location and time in email body
System::String meetingLocation = System::String(L"<u>") + L"Hall 1, Convention Center, New York, USA" + L"</u>";
System::String meetingTime = System::String(L"<u>") + L"Monday, June 28, 2010" + L"</u>";
message->set_HtmlBody(message->get_HtmlBody().Replace(L"MeetingPlace", meetingLocation));
message->set_HtmlBody(message->get_HtmlBody().Replace(L"MeetingTime", meetingTime));
// Save the message in MSG format and open in Office Outlook
System::SharedPtr<MapiMessage> msg = MapiMessage::FromMailMessage(message);
msg->SetMessageFlags(Aspose::Email::Outlook::MapiMessageFlags::MSGFLAG_UNSENT);
msg->Save(dataDir + L"ReadAndWritingOutlookTemplateFile_out.msg");

Управление цифровыми подписями сообщений

Aspose.Email реализует полный алгоритм объекта электронной почты S/MIME. Это дает API полную возможность сохранять цифровые подписи при конвертации сообщений между форматами.

Сохранение подписи при конвертации из EML в MSG

При конвертации из EML в MSG установите флаг preserveSignature в true, чтобы сохранить подпись. Следующий фрагмент кода показывает, как выполнить конвертацию из EML в MSG.

For complete examples and data files, please go to https://github.com/kashifiqb/Aspose.Email-for-C
// The path to the File directory.
System::String dataDir = RunExamples::GetDataDir_Outlook();
// Load mail message
System::SharedPtr<MailMessage> message = MailMessage::Load(dataDir + L"Message.eml", System::MakeObject<EmlLoadOptions>());
// Save as MSG
message->Save(dataDir + L"ConvertEMLToMSG_out.msg", SaveOptions::get_DefaultMsgUnicode());

Конвертация S/MIME сообщений из MSG в EML

Aspose.Email сохраняет цифровую подпись при конвертации из MSG в EML, как показано в следующем фрагменте кода.

For complete examples and data files, please go to https://github.com/kashifiqb/Aspose.Email-for-C
// The path to the File directory.
System::String dataDir = RunExamples::GetDataDir_Outlook();
System::SharedPtr<MailMessage> msg = MailMessage::Load(dataDir + L"message.eml");
System::SharedPtr<MapiMessage> mapi = MapiMessage::FromMailMessage(msg, System::MakeObject<MapiConversionOptions>(Aspose::Email::Outlook::OutlookMessageFormat::Unicode));
// Save File to disk
mapi->Save(dataDir + L"ConvertMIMEMessagesFromMSGToEML_out.msg");

Установка цветовой категории для файлов MSG Outlook

Цветовая категория обозначает важность или категорию электронного сообщения. 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/kashifiqb/Aspose.Email-for-C
// The path to the File directory.
System::String dataDir = RunExamples::GetDataDir_Outlook();
System::SharedPtr<MapiMessage> msg = MapiMessage::FromFile(dataDir + L"message1.msg");
// Add Two category
FollowUpManager::AddCategory(msg, L"Purple Category");
FollowUpManager::AddCategory(msg, L"Red Category");
// Retrieve the list of available categories
System::SharedPtr<System::Collections::Generic::IList<System::String>> categories = FollowUpManager::GetCategories(msg);
// Remove the specified category and then Clear all categories
FollowUpManager::RemoveCategory(msg, L"Red Category");
FollowUpManager::ClearCategories(msg);

Доступ к информации о последующих действиях из файла MSG

API Aspose.Email предоставляет возможность получить информацию о последующих действиях из отправленного или полученного сообщения. Он может извлекать информацию о подтверждении чтения, подтверждении доставки и результатах голосования из файла сообщения.

Извлечение информации о чтении и подтверждении доставки

Следующий фрагмент кода показывает, как извлечь информацию о чтении и подтверждении доставки.

For complete examples and data files, please go to https://github.com/kashifiqb/Aspose.Email-for-C
System::SharedPtr<MapiMessage> msg = MapiMessage::FromFile(dataDir + L"TestMessage.msg");
{
auto recipient_enumerator = (msg->get_Recipients())->GetEnumerator();
decltype(recipient_enumerator->get_Current()) recipient;
while (recipient_enumerator->MoveNext() && (recipient = recipient_enumerator->get_Current(), true))
{
System::Console::WriteLine(System::String::Format(L"Recipient: {0}",recipient->get_DisplayName()));
// Get the PR_RECIPIENT_TRACKSTATUS_TIME_DELIVERY property
System::Console::WriteLine(System::String::Format(L"Delivery time: {0}",recipient->get_Properties()->idx_get(MapiPropertyTag::PR_RECIPIENT_TRACKSTATUS_TIME_DELIVERY)->GetDateTime()));
// Get the PR_RECIPIENT_TRACKSTATUS_TIME_READ property
System::Console::WriteLine(System::String::Format(L"Read time: {0}",recipient->get_Properties()->idx_get(MapiPropertyTag::PR_RECIPIENT_TRACKSTATUS_TIME_READ)->GetDateTime()));
System::Console::WriteLine();
}
}