Trabalhando com Anexos de Mensagem

Analisando e Salvando Anexos

Os arquivos de mensagem do Outlook podem conter um ou mais anexos. O Aspose.Email permite que os desenvolvedores percorram os anexos em um arquivo MSG e os salvem no disco. Este tópico descreve o processo. Também descreve como incorporar um anexo.

A classe MapiMessage do Aspose.Email é usada para carregar um arquivo MSG do disco e expõe o método getAttachments() que faz referência à coleção de objetos MapiAttachment associada ao arquivo MSG. O objeto MapiAttachment ainda expõe métodos que executam ações sobre o anexo.

Para salvar anexos em um arquivo MSG no disco com o nome e a extensão originais:

  1. Crie uma instância da classe MapiMessage para carregar um arquivo MSG usando o método estático Load().
  2. Chame o método getAttachments() da classe MapiRecipient para obter uma referência à coleção de objetos MapiAttachment associados ao arquivo MSG.
  3. Percorra a MapiAttachmentCollection para exibir informações sobre cada objeto MapiAttachment através de seus métodos públicos.
  4. Chame o método save() da classe MapiAttachment para salvar o anexo no disco.

Incorporando Mensagens como Anexos

Uma mensagem do Microsoft Outlook pode conter outras mensagens do Microsoft Outlook em anexos, seja como mensagens regulares, descritas acima, ou mensagens incorporadas. A MapiAttachmentCollection fornece membros sobrecarregados do método add para criar mensagens do Outlook com ambos os tipos de anexos. Arquivos MSG do Outlook incorporados em um arquivo MSG contêm um PR_ATTACH_METHOD com o valor 5.

Lendo uma Mensagem Incorporada de um Anexo

Inserção e Substituição de Anexos MSG

A API Aspose.Email fornece a capacidade de inserir anexos em um índice específico na mensagem pai. Ela também fornece a possibilidade de substituir o conteúdo de um anexo por outro anexo de mensagem.

Inserir Anexo MSG em Localização Específica

A API Aspose.Email fornece a capacidade de inserir um anexo MSG em um MSG pai usando o método MapiAttachmentCollection.Insert().

Substituir Conteúdos de Anexo MSG Incorporado

Isso pode ser usado para substituir conteúdos de anexo incorporado pelos novos usando o método Replace. No entanto, não pode ser usado para inserir um anexo com PR_ATTACH_NUM = 4 (por exemplo) na coleção com collection.Count = 2.

Salvar Anexos de Mensagem Digitalmente Assinada

A API Aspose.Email fornece a capacidade de obter ou definir um valor indicando se uma mensagem assinada de forma clara será decodificada.

Renomear um Anexo em um MapiMessage

O Aspose.Email torna possível editar o valor da propriedade DisplayName nos anexos MapiMessage.

O seguinte exemplo de código demonstra como atualizar os nomes de exibição dos primeiros e segundos anexos dentro da mensagem Mapi carregada:

MapiMessage msg = MapiMessage.load(fileName);
msg.getAttachments().get_Item(0).setDisplayName("Novo nome de exibição 1");
msg.getAttachments().get_Item(1).setDisplayName("Novo nome de exibição 2");

Verificar se um Anexo é Inline ou Regular

A diferença entre anexos inline e regulares é como eles são apresentados dentro de um e-mail. Anexos inline são incorporados dentro do corpo do e-mail e podem ser visualizados sem precisar abrir um arquivo separado ou baixar qualquer coisa. Anexos regulares, por outro lado, são arquivos separados que estão anexados ao e-mail, mas não são exibidos diretamente dentro do corpo da mensagem e precisam ser baixados e abertos externamente. A propriedade MapiAttachment.IsInline da classe MapiAttachment obtém um valor indicando se o anexo é inline ou regular.

O seguinte exemplo de código carrega uma mensagem de e-mail de um arquivo e depois recupera informações sobre os anexos, imprimindo especificamente o nome de exibição de cada anexo e se ele está inline dentro da mensagem ou não:

MapiMessage message = MapiMessage.load("fileName");

for (MapiAttachment attach : message.getAttachments()) {
    System.out.println(attach.getDisplayName() + ": " + attach.isInline());
}