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:
- Carregamos o modelo usando a classe MailMessage.
- Atualizamos algumas das propriedades.
- 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:
- Adicionar uma categoria de cor.
- Adicionar outra categoria de cor.
- Recuperar a lista de todas as categorias.
- 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(); | |
} | |
} |