Trabalhando com Anexos de Mensagem
Gerenciando Anexos com Aspose Outlook
Creating and Saving Outlook Message (MSG) Files explica 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 em disco usando a propriedade Attachments da classe MapiMessage. A propriedade Attachments é uma coleção do tipo MapiAttachmentCollection.
Verificar se o Anexo é Inline ou Regular
Anexos inline e regulares servem para propósitos diferentes. Anexos inline estão visualmente integrados à mensagem de e-mail e geralmente são imagens ou arquivos de mídia. Enquanto isso, anexos regulares são arquivos separados anexados ao e-mail e podem incluir vários tipos de arquivos. A propriedade MapiAttachment.IsInline da classe MapiAttachment recebe um valor que indica se o anexo é inline ou regular.
O seguinte exemplo de código extrai e exibe informações sobre cada anexo na MapiMessage carregada, incluindo seus nomes de exibição e se são anexos inline ou não.
var message = MapiMessage.Load(fileName);
foreach (var attach in message.Attachments)
{
Console.WriteLine($"{attach.DisplayName0} : {attach.IsInline)}");
}
Salvar Anexos do Arquivo de Mensagem (MSG) do Outlook
Para salvar anexos de um arquivo MSG:
- Itere pela coleção MapiAttachmentCollection e obtenha os anexos individuais.
- 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.
Obtendo Anexos de Mensagens de E-mail Aninhadas
Anexos OLE incorporados também aparecem na coleção de Anexos da classe MapiMessage. O seguinte exemplo de código analisa um arquivo de mensagem em busca de anexos de mensagem incorporados e os salva no disco. O método estático FromProperties() da classe MapiMessage pode criar uma nova mensagem a partir de um anexo incorporado. O seguinte trecho de código mostra como obter anexos de mensagens de e-mail aninhadas.
Removendo Anexos
A biblioteca Aspose Outlook fornece a funcionalidade para remover anexos de arquivos Microsoft Outlook Message (.msg):
- Chame o método RemoveAttachments(). Ele recebe o caminho do arquivo de mensagem como um parâmetro. É implementado como um método público e estático, portanto, você não precisa instanciar o objeto.
O seguinte trecho de código mostra como remover anexos.
Você também pode chamar o método estático DestoryAttachment() da classe MapiMessage. Ele funciona mais rápido que RemoveAttachment(), porque o método RemoveAttachment() analisa o arquivo de mensagem.
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.
Experimente!
Adicione ou remova anexos de e-mail com o gratuito Aspose.Email Editor App.
Adicionando um ReferenceAttachment em um MapiMessage
O método MapiAttachmentCollection.Add(string name, string sharedLink, string url, string providerName) da classe MapiAttachmentCollection permite adicionar um anexo de referência em um MapiMessage. Quando os destinatários do e-mail clicam no anexo de referência, eles poderão acessar o arquivo vinculado se tiverem as permissões apropriadas para fazê-lo. Usando um anexo de referência, você pode enviar uma mensagem de e-mail menor e garantir que todos tenham acesso à versão mais atualizada do arquivo ou item.
O método possui os seguintes parâmetros:
- name - o nome do anexo
- sharedLink - um link compartilhado totalmente qualificado para o anexo fornecido pelo serviço web que manipula o anexo
- url - uma localização de arquivo
- providerName - um nome do provedor de anexo de referência
O exemplo de código abaixo demonstra como adicionar um anexo de referência a uma mensagem:
// Suponha que você queira enviar uma mensagem de e-mail que inclua um link para um arquivo Document.pdf armazenado no Google Drive.
// Em vez de anexar o documento diretamente à mensagem de e-mail,
// você pode criar um anexo de referência que vincula ao arquivo no Google Drive.
// Crie uma mensagem
var msg = new MapiMessage("from@domain.com", "to@domain.com", "Arquivo de mensagem do Outlook",
"Esta mensagem é criada pela Aspose.Email", OutlookMessageFormat.Unicode);
// Adicione um anexo de referência
msg.Attachments.Add("Document.pdf",
"https://drive.google.com/file/d/1HJ-M3F2qq1oRrTZ2GZhUdErJNy2CT3DF/",
"https://drive.google.com/drive/my-drive",
"GoogleDrive");
// Você também pode definir propriedades adicionais do anexo
msg.Attachments[0].SetProperty(KnownPropertyList.AttachmentPermissionType, AttachmentPermissionType.AnyoneCanEdit);
msg.Attachments[0].SetProperty(KnownPropertyList.AttachmentOriginalPermissionType, 0);
msg.Attachments[0].SetProperty(KnownPropertyList.AttachmentIsFolder, false);
msg.Attachments[0].SetProperty(KnownPropertyList.AttachmentProviderEndpointUrl, "");
msg.Attachments[0].SetProperty(KnownPropertyList.AttachmentPreviewUrl, "");
msg.Attachments[0].SetProperty(KnownPropertyList.AttachmentThumbnailUrl, "");
// Por fim, salve a mensagem
msg.Save(@"my.msg");
Incorporando uma Mensagem como Anexo
O seguinte trecho de código mostra como incorporar um anexo de arquivo MSG a uma mensagem.
Lendo Mensagens Incorporadas de Anexos
O seguinte trecho de código mostra como ler mensagens incorporadas de anexos.
Inserção e Substituição de Anexos
A API Aspose.Email fornece a capacidade de inserir anexos em um índice específico na mensagem pai. Também fornece a capacidade de substituir o conteúdo de um anexo por outro anexo de mensagem.
Experimente!
Execute o projeto simples ReplaceAttach, e experimente as capacidades da Aspose.Email para substituir anexos em ação.
Inserir 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 Insert da MapiAttachmentCollection MapiAttachmentCollection Insert(int index, string name, MapiMessage msg). O seguinte trecho de código mostra como inserir um anexo em uma localização específica.
Substituir Conteúdos de Anexo
Isso pode ser usado para substituir os conteúdos de um 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. O seguinte trecho de código mostra como substituir os conteúdos de um anexo.
Renomeando um Anexo em MapiMessage
É possível editar o valor da propriedade DisplayName nos anexos de MapiMessage.
var msg = MapiMessage.Load(fileName);
msg.Attachments[0].DisplayName = "Novo nome de exibição 1";
msg.Attachments[1].DisplayName = "Novo nome de exibição 2";
Salvar Anexos de Mensagens Digitalmente Assinadas
A API Aspose.Email fornece a capacidade de obter ou definir um valor indicando se a mensagem assinada em claro será decodificada.