Gerenciando Arquivos de Mensagem do Outlook com a API do Analisador de Email em C++

Lendo e Escrevendo Arquivo de Modelo do Outlook (.OFT)

Os modelos do Outlook são muito úteis quando você deseja enviar uma mensagem de email semelhante repetidamente. Em vez de preparar a mensagem do zero a cada vez, prepare primeiro a mensagem no Outlook e salve-a como um modelo do Outlook (OFT). Depois disso, sempre que precisar enviar a mensagem, você pode criá-la a partir do modelo, economizando tempo escrevendo o mesmo texto no corpo ou na linha de assunto, definindo formatação e assim por diante. A classe MailMessage da Aspose.Email pode ser usada para carregar e ler um arquivo de modelo do Outlook (OFT). Assim que o modelo do Outlook for carregado em uma instância da classe MailMessage, você poderá atualizar o remetente, destinatário, corpo, assunto e outras propriedades. Após atualizar as propriedades:

  • Envie o email usando a classe SmtpClient ou
  • Salve a mensagem como MSG e faça mais atualizações/validações usando o Microsoft Outlook.

Nos exemplos de código abaixo, nós:

  1. Carregamos o modelo usando a classe MailMessage.
  2. Atualizamos algumas das propriedades.
  3. Salvamos a mensagem no formato MSG.

O seguinte trecho de código mostra como carregar o arquivo OFT com a API da Biblioteca de Análise de Email em C++, atualizando a mensagem e salvando-a no formato 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");

Gerenciando Mensagens Assinadas Digitalmente

A Aspose.Email implementa o algoritmo completo do objeto de email S/MIME. Isso dá à API o poder total de preservar assinaturas digitais ao converter mensagens entre formatos.

Preservando Assinatura ao Converter de EML para MSG

Ao converter de EML para MSG, defina a flag preserveSignature como true para preservar uma assinatura. O seguinte trecho de código mostra como converter de EML para 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());

Convertendo Mensagens S/MIME de MSG para EML

A Aspose.Email preserva a assinatura digital ao converter de MSG para EML, conforme mostrado no seguinte trecho de código.

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

Definindo Categoria de Cor para Arquivos MSG do Outlook

Uma categoria de cor marca uma mensagem de email para algum tipo de importância ou categoria. O Microsoft Outlook permite que os usuários atribuam categorias de cor para diferenciar emails. Para lidar com a categoria de cor, use o FollowUpManager. Ele contém funções como AddCategory, RemoveCategory, ClearCategories e GetCategories.

  • AddCategory recebe MapiMessage e a string da categoria de cor, por exemplo “Categoria Roxa” ou “Categoria Vermelha” como argumentos.
  • RemoveCategory recebe MapiMessage e a string da categoria de cor a ser removida da mensagem.
  • ClearCategories() é usado para remover todas as categorias de cor da mensagem.
  • GetCategories é usado para recuperar todas as categorias de cor de uma mensagem específica.

O seguinte exemplo realiza as tarefas descritas abaixo:

  1. Adicionar uma categoria de cor.
  2. Adicionar outra categoria de cor.
  3. Recuperar a lista de todas as categorias.
  4. Remover todas as categorias.
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);

Acessando Informações de Follow Up do arquivo MSG

A API Aspose.Email fornece a capacidade de acessar as informações de follow up de uma mensagem enviada ou recebida. Ela pode recuperar as informações de Recibo de Leitura, Recibo de Entrega e resultados de votação de um arquivo de mensagem.

Recuperando Informações de Recibo de Leitura e Entrega

O seguinte trecho de código mostra como recuperar informações de recibo de leitura e entrega.

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