Управление файлами сообщений 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(); | |
} | |
} |