Gerenciar Anexos em Arquivos Outlook MSG

Aspose.Email for C++ fornece uma API rica para acessar, salvar, remover e incorporar anexos ao trabalhar com arquivos Microsoft Outlook MSG. Os anexos são manipulados através do MapiMessage classe, usando seu Attachments propriedade, que expõe um MapiAttachmentCollection.

Salvar Anexos de um Arquivo MSG

Para extrair e salvar anexos de um arquivo MSG:

  1. Carregue a mensagem usando MapiMessage::Load.
  2. Itere através do MapiAttachmentCollection.
  3. Salve cada anexo usando o MapiAttachment::Save() método.
// Create an instance of MapiMessage from file
System::SharedPtr<MapiMessage> message = MapiMessage::Load(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());
    }
}

Remover Anexos

Aspose.Email para C++ oferece duas maneiras de remover anexos de arquivos MSG:

Ele recebe o caminho do arquivo de mensagem como parâmetro. É implementado como um método estático público, portanto não é necessário instanciar o objeto. Este método auxiliar estático remove todos os anexos de um arquivo de mensagem.

O trecho de código a seguir mostra como usar este método.

Ele funciona mais rápido porque remove anexos sem analisar completamente o arquivo MSG.

Adicionar Anexos MSG

Arquivos MSG podem conter outros arquivos MSG como anexos padrão ou incorporados. Use o método sobrecarregado Add métodos em MapiAttachmentCollection para incorporar mensagens do Outlook.

O exemplo de código a seguir demonstra como criar uma nova mensagem MAPI com remetente, destinatário, assunto e corpo especificados, então anexar um arquivo MSG existente como mensagem incorporada, e finalmente salvar a mensagem resultante com o anexo incorporado em um novo arquivo MSG.

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::Load(L"Message.msg");
message->get_Attachments()->Add(L"Weekly report.msg", attachMsg);
message->Save(dataDir + L"WithEmbeddedMsg_out.msg");