Управление файлами сообщений Outlook с помощью C++ Email Parser API
Чтение и запись файла шаблона Outlook (.OFT)
Шаблоны Outlook очень полезны, когда вы хотите отправить похожее электронное сообщение снова и снова. Вместо того чтобы каждый раз готовить сообщение с нуля, сначала подготовьте его в Outlook и сохраните как шаблон Outlook (OFT). После этого, когда вам нужно отправить сообщение, вы можете создать его из шаблона, что сэкономит время на написание одного и того же текста в теле или строке темы, настройку форматирования и так далее. Класс MailMessage из Aspose.Email может быть использован для загрузки и чтения файла шаблона Outlook (OFT). После загрузки шаблона Outlook в экземпляр класса MailMessage, вы можете обновить отправителя, получателя, тело, тему и другие свойства. После обновления свойств:
- Отправьте электронное письмо с помощью класса SmtpClient или
- Сохраните сообщение в формате MSG и выполните дальнейшие обновления/валидацию с помощью Microsoft Outlook.
В приведенных ниже примерах кода мы:
- Загружаем шаблон с помощью класса MailMessage.
- Обновляем некоторые свойства.
- Сохраняем сообщение в формате 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 используется для получения всех цветовых категорий из конкретного сообщения.
Следующий пример выполняет задачи, указанные ниже:
- Добавить цветовую категорию.
- Добавить другую цветовую категорию.
- Получить список всех категорий.
- Удалить все категории.
| 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(); | |
| } | |
| } |