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:
- Carregue a mensagem usando MapiMessage::Load.
- Itere através do MapiAttachmentCollection.
- 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:
- Chame o RemoveAttachments() method
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.
- Chame o DestoryAttachment() method
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");