Trabalhando com Anexos de Mensagens do Outlook usando a API de Análise de E-mail em C++

Gerenciando Anexos com Aspose Outlook

Criar e Salvar Arquivos de Mensagem do Outlook (MSG) explicou como criar e salvar mensagens, e como criar arquivos MSG com anexos. Este artigo explica como gerenciar anexos do Microsoft Outlook com Aspose.Email. Anexos de um arquivo de mensagem são acessados e salvos no disco usando a propriedade Attachments da classe MapiMessage. A propriedade Attachments é uma coleção do tipo MapiAttachmentCollection.

Salvar Anexos de Arquivo de Mensagem do Outlook (MSG)

Para salvar anexos de um arquivo MSG:

  1. Percorra a coleção MapiAttachmentCollection e obtenha os anexos individuais.
  2. Para salvar os anexos, chame o método Save() da classe MapiAttachment.

O seguinte trecho de código mostra como salvar anexos no disco local.

For complete examples and data files, please go to https://github.com/kashifiqb/Aspose.Email-for-C
// Create an instance of MapiMessage from file
System::SharedPtr<MapiMessage> message = MapiMessage::FromFile(dataDir + fileName);
// Iterate through the attachments collection
{
auto attachment_enumerator = (message->get_Attachments())->GetEnumerator();
decltype(attachment_enumerator->get_Current()) attachment;
while (attachment_enumerator->MoveNext() && (attachment = attachment_enumerator->get_Current(), true))
{
// Save the individual attachment
attachment->Save(dataDir + attachment->get_FileName());
}
}

Removendo Anexos

A biblioteca Aspose Outlook fornece a funcionalidade para remover anexos de arquivos de Mensagem do Microsoft Outlook (.msg):

  • Chame o método RemoveAttachments(). Ele recebe o caminho do arquivo de mensagem como um parâmetro. É implementado como um método estático público, portanto, você não precisa instanciar o objeto.

O seguinte trecho de código mostra como remover Anexos usando a Biblioteca de Análise de E-mail em C++.

For complete examples and data files, please go to https://github.com/kashifiqb/Aspose.Email-for-C
MapiMessage::RemoveAttachments(dataDir + L"AttachmentsToRemove_out.msg");

Você também pode chamar o método estático da classe MapiMessage DestroyAttachment(). Ele funciona mais rápido que RemoveAttachment(), porque o método RemoveAttachment() analisa o arquivo de mensagem.

For complete examples and data files, please go to https://github.com/kashifiqb/Aspose.Email-for-C
MapiMessage::DestroyAttachments(dataDir + L"AttachmentsToDestroy_out.msg");

Adicionando Anexos MSG

Uma mensagem do Outlook pode conter outras mensagens do Microsoft Outlook em anexos, seja como mensagens regulares ou incorporadas. A MapiAttachmentCollection fornece membros sobrecarregados do método Add para criar mensagens do Outlook com ambos os tipos de anexos.

Incorporando Mensagem como Anexo

O seguinte trecho de código mostra como os arquivos MSG do Outlook incorporados em um arquivo MSG contêm um PR_ATTACH_METHOD cujo valor é igual a 5.

For complete examples and data files, please go to https://github.com/kashifiqb/Aspose.Email-for-C
System::SharedPtr<MapiMessage> message = System::MakeObject<MapiMessage>(L"from@test.com", L"to@test.com", L"Subj", L"This is a message body");
System::SharedPtr<MapiMessage> attachMsg = MapiMessage::FromFile(dataDir + L"Message.msg");
message->get_Attachments()->Add(L"Weekly report.msg", attachMsg);
message->Save(dataDir + L"WithEmbeddedMsg_out.msg");