Na semana passada surgiu uma questão entre colegas de trabalho sobre um requisito de um cliente. Se era possível salvar o e-mail que foi recebido do Dataverse e ou de uma caixa de e-mail de maneira automática em um Sharepoint. Mas no caso o desejo não é somente salvar o corpo do e-mail mas sim o e-mail como um todo, contendo o conteúdo e seus anexos atrelados.
Então fui atrás para saber se seria possível, pois também fiquei curioso se existia alguma maneira de fazer isso utilizando o Power Platform sem desenvolvimento com código conectando em uma mailbox via SMTP. E descobri que sim! É possível salvar o e-mail na íntegra dentro do Sharepoint.
E para isso vamos ter que utilizar o Power Automate com Microsoft Graph.
Arquivo tipo EML
EML é uma extensão de arquivo com base na RFC-822 que define um modelo único de formatação do e-mail para comunicação na web, permitindo transacionar o conteúdo completo do e-mail entre diversas aplicações de e-mail (Outlook, Gmail, Hotmail e outros).
E quando utilizamos esse modelo de arquivos preservamos o e-mail do jeito que ele foi gerado, permitindo manter dados:
- Dados de cabeçalho do e-mail
- Assunto
- Formatação do conteúdo
- Data da Mensagem
- Link
- Anexos
Dessa forma, o e-mail com o seu conteúdo original com todas informações para futura análise.
E por incrível que parece no Microsoft Graph, existe um endpoint que fornece o e-mail nesse formato. Aonde podemos obter através da seguinte url:
https://graph.microsoft.com/v1.0/users/<endereço_de_email>/messages/<id da mensagem>/$value
Nessa URL precisamos passar dois parâmetros:
<endereço_de_email>: Endereço de e-mail em que foi recebido a mensagem
<id da mensagem>: Id da mensagem no Exchange.
Além disso, para acessar o endpoint do Microsoft Graph, é necessário fornecer a autorização de duas permissões. São Elas: Mail.Read.Shared e Mail.ReadWrite.Shared.
Você pode utilizar o Graph Explorer para testar suas requisições.
Ao executar a URL obteremos os e-mail no formato EML.
Agora que já sabemos como obter o e-mail vamos para o Power Automate, para fazer o processo completo.
O nosso fluxo completo ficará assim:
When a new email arrives (V3)
Aqui vamos configurar a trigger para que toda vez que um novo e-mail chegar, com a seguinte configuração:
Aqui é importante colocar “Include Attachments” para que e-mails com anexos sejam também processados.
Obter EML
Agora vamos fazer utilizar do Microsoft Graph, e para isso vamos utilizar a action “HTTP with Microsoft Entra ID (preauthorized)”, você deverá conectar com o usuário com acesso ao Microsoft Graph e configurar a conexão da seguinte forma:
Configurado a conexão de referência, agora a ação para fazer a requisição:
Configurando conforme a imagem abaixo:
Os parâmetros “To” e “Message Id” serão obtidos da trigger quando o e-mail é recebido.
Após isso vamos, vamos salvar o arquivo. Neste caso vou utilizar o Sharepoint, e vou usar a ação “Create File” com a seguinte configuração:
O nome do arquivo será o assunto + extensão. eml, e no atributo “File Content” vamos ter o resultado da execução da api do Microsoft Graph.
Vamos salvar e agora testar o fluxo! Vou criar um novo registro de e-mail aonde será enviada para minha caixa de correio com um anexo.
Email Enviado. Vamos agora olhar o fluxo!
E quando abrimos o Sharepoint, o e-mail está salvo.
Quando abrimos ele mostra o e-mail.
E quando abro o arquivo EML no meu computador consigo ver a mensagem corretamente e o anexo também.
Dessa forma, conseguimos obter o e-mail integro com todas suas informações! Espero que tenham gostado dessa dica e até a próxima!