Transforme cada e-mail recebido em um arquivo PDF pronto para auditoria no Power Automate: um fluxo de trabalho de 7 etapas para o Outlook.

Arquivo de e-mail para PDF É um fluxo do Power Automate que é acionado a cada novo e-mail recebido no Outlook, converte o corpo da mensagem e todos os anexos em PDF, mescla-os em um único PDF consolidado com data e hora e grava o resultado no Dropbox para armazenamento a longo prazo para fins de conformidade. Sete ações. Sem código. Um arquivo por e-mail, primeiro o corpo e depois os anexos em ordem. O resultado é nomeado. merge-YYYYMMDD-HHmmss.pdf assim, cada entrada do arquivo pode ser classificada de forma única.
Equipes de auditoria, responsáveis pela gestão de registros e responsáveis pela conformidade precisam de evidências de e-mail preservadas em um formato inviolável e pesquisável que resista às políticas de retenção do Exchange. A exportação nativa do Outlook é manual, arquivo por arquivo, e resulta na perda de anexos em arquivos separados. Este passo a passo cria uma alternativa sem código: cada e-mail recebido se torna um único PDF consolidado, automaticamente, com o original. .eml e os anexos ainda estão no Outlook devido a questões legais, mas o PDF do arquivo serve como cópia oficial dos registros.
Um gatilho do Outlook é acionado a cada e-mail recebido em um endereço monitorado. Uma variável de matriz chamada e-mail abre. PDF4me Converter para PDF Converte primeiro o corpo HTML em PDF (torna-se a página 1). Aplicar a cada um O PDF4me analisa cada anexo, converte cada um para PDF usando os renderizadores Aspose Words/Cells/Slides e os anexa em sequência. Mesclar vários arquivos PDF consome toda a matriz e emite um PDF consolidado. O Dropbox o grava como merge-20260611-103323.pdfPrimeiro o corpo do texto, depois os anexos, com data e hora registradas, qualidade de arquivo.
Perguntas e respostas baseadas no "porquê".
Por que converter para PDF para arquivar em vez de salvar o arquivo .eml? Os arquivos EML exigem o Outlook ou um leitor compatível para serem abertos, incorporam anexos em um fluxo binário que os auditores não conseguem pesquisar e dependem da formatação do cliente de e-mail do remetente. Um único PDF consolidado é universalmente legível, compatível com OCR, inclui anexos e atende ao formato de retenção exigido pela maioria das auditorias de descoberta legal e SOX/GDPR.
Por que usar uma única variável de matriz para o corpo e os anexos? A ação "Mesclar vários arquivos PDF" requer uma única coleção ordenada. Inicialize uma vez, insira o corpo do arquivo na etapa 4, insira cada anexo convertido na etapa 5, e a matriz terá exatamente a ordem dos documentos que o arquivo compactado precisa (corpo primeiro, depois os anexos na ordem de envio). Duas matrizes separadas exigiriam uma ação "Compor" posteriormente apenas para concatená-las.
Por que base64ParaBinário A cada toque? O PDF4me Convert to PDF retorna sua saída como uma string base64 em $contentOs anexos do Outlook chegam em formato base64. bytes de conteúdoA mesclagem de vários arquivos PDF requer buffers binários, não strings base64. O mesmo ocorre com os demais. base64ParaBinário(...) As chamadas de ponte abrangem ambas as fontes, apenas apontando para nomes de propriedade diferentes. Ignore a conversão e os erros de ação de mesclagem com "conteúdo inválido".
Por que um nome de saída com registro de data e hora? Dois e-mails enviados para o mesmo endereço no mesmo minuto entrariam em conflito devido a um nome de arquivo constante. concat('merge-', formatDateTime(utcNow(), 'yyyyMMdd-HHmmss'), '.pdf') produz nomes UTC de precisão de segundos como merge-20260611-103323.pdfClassificável lexicograficamente, de leitura instantânea e com construção única. Os auditores adoram este formato.
O que você receberá
Entrada: Qualquer e-mail recebido no endereço do Outlook monitorado (aqui) [email protected]) com um ou mais anexos. Este passo a passo usa um corpo de mensagem curto ("Olá, espero que esteja bem...") e dois anexos DOCX (3Page.docx, Docx_2Pages.docx). Saída: Um único arquivo PDF consolidado em /blog data/merge blog template/output/, chamado merge-YYYYMMDD-HHmmss.pdfA página 1 contém o corpo do texto. Da página 2 em diante, cada anexo é apresentado na ordem em que foi anexado, renderizado por meio do Aspose Words.
O e-mail recebido

A pasta de arquivos após duas execuções

Página 1 de um arquivo PDF consolidado

Do que você precisa
- Power Automate. Abra o Power AutomateQualquer plano com conectores premium (PDF4me Connect é premium).
- Chave da API do PDF4me. Obtenha sua chave de APIConecte-o na primeira vez que adicionar uma ação do PDF4me.
- Office 365 OutlookPara o gatilho "Quando um novo e-mail chega V3" e para ler os bytes do conteúdo do anexo. Qualquer caixa de entrada na qual o conector possa autenticar funciona.
- Dropbox (ou SharePoint, OneDrive, Google Drive). Para o destino do arquivo.
- Um e-mail de teste com anexosO passo a passo utiliza dois exemplos em formato DOCX. 3Páginas.docx e Docx_2Pages.docx.
Primeiro, obtenha as amostras e o resultado esperado. Baixe os dois arquivos DOCX, anexe-os a um e-mail rápido para o endereço que você está monitorando e publique o fluxo. Sua primeira execução deverá produzir um resultado. mesclar-AAAAMMDD-HHmmss.pdf que espelha exatamente a amostra vinculada (apenas o carimbo de data/hora difere).
O Fluxo em Resumo
- Outlook: Quando um novo e-mail chega (V3) (acionar).
- Inicializar variável chamado
email(Variedade). - PDF4me: Converter para PDF (Corpo)Lê o corpo do HTML e retorna um PDF.
- Adicionar à variável de matriz com
base64ToBinaryno corpo convertido. - Aplicar a cada sobre
triggerOutputs()?['body/attachments']:- PDF4me: Converter para PDF o anexo.
- Adicionar à variável de matriz com
base64ToBinaryno PDF convertido.
- PDF4me: Mescle vários arquivos PDF em um único arquivo PDF.Matriz de entrada, um PDF de saída.
- Dropbox: Criar arquivoA expressão "Nome do Arquivo" registra o carimbo de data/hora UTC.
Visão geral completa do fluxo

Sete ações. O PDF4me entra no fluxo três vezes: converter o corpo, converter cada anexo e mesclar tudo.
Campos de anexo do Outlook (referência)
A Perspectiva Quando um novo e-mail chega V3 O gatilho expõe esses campos de anexo que você mapeia no conversor:
| Campo | Tipo | Expressão de origem | O que ele carrega |
|---|---|---|---|
name | corda | items('Apply_to_each')?['name'] | Nome original do arquivo, incluindo a extensão (Invoice.docx) |
contentBytes | string base64 | items('Apply_to_each')?['contentBytes'] | Conteúdo binário do anexo, codificado em base64. |
contentType | corda | items('Apply_to_each')?['contentType'] | Tipo MIME (application/vnd.openxmlformats-officedocument.wordprocessingml.document) |
size | inteiro | items('Apply_to_each')?['size'] | Bytes, útil para filtrar anexos grandes. |
isInline | booleano | items('Apply_to_each')?['isInline'] | Verdadeiro para imagens embutidas no corpo do texto; geralmente filtradas. |
O PDF4me Convert to PDF lê a extensão do arquivo desativada. name para escolher o renderizador correto (.docx → Palavras Aspostas, .xlsx → Células Aspose, .pptx → O Aspose processa slides, imagens e PDFs nativamente.
Passo 1: Como monitorar a caixa de entrada do Outlook em busca de e-mails recebidos?
Fluxo até o momento: Apenas acione.
- Em Power Automate clique Criar, escolher Fluxo de nuvem automatizado.
- Dê um nome ao fluxo (por exemplo,
Email Archive to PDF), escolha Office 365 Outlook: Quando um novo e-mail chega (V3) como gatilho, clique Criar. - Conectar Sua caixa de correio do Office 365.
- Expand Parâmetros avançados e clique Mostrar tudo para revelar as opções de filtragem.
- Configurar:
- Para:
[email protected](filtrar para que apenas e-mails endereçados a este endereço acionem o fluxo) - Incluir anexos:
Yes - Somente com anexos:
Yes
- Para:
Configuração do gatilho

Dica. Somente com anexos Sim É o que impede que o fluxo seja acionado a cada notificação interna, convite de calendário ou resposta automática. Combine com um Para filtrar por um alias de arquivo dedicado (por exemplo, [email protected]) para um endereço de entrada limpo que receba apenas as correspondências que você realmente deseja arquivar.
Etapa 2: Inicializar a variável de e-mail
Fluxo até o momento: Gatilho mais Inicializar variável.
Abra uma matriz vazia para coletar o PDF do corpo do arquivo e todos os PDFs dos anexos.
- Clique + Novo passo, escolha Inicializar variável.
- Configurar:
- Nome:
email - Tipo:
Array - ValorDeixe em branco
- Nome:
Inicializar configuração de variáveis

Etapa 3: Como o PDF4me converte o corpo do e-mail em PDF?
Fluxo até o momento: Gatilho + Inicializar variável + Converter para corpo PDF.
O gatilho do Outlook emite o corpo da mensagem como HTML em body/bodyO PDF4me Convert to PDF lê o HTML diretamente, portanto, toda a conversão é feita em uma única chamada de ação.
- Clique + Novo passo, procurar PDF4me, escolha Converter para PDF.
- Renomear a ação para Converter para corpo de PDF Assim, a ação "Converter para PDF" da etapa 5 receberá um nome próprio e mais claro posteriormente.
- Conectar Conecte-se ao PDF4me com sua chave de API (somente na primeira vez).
- Configurar:
- Conteúdo do arquivo (expressão, clique)
fx):triggerOutputs()?['body/body'] - Nome do arquivo:
email-body.html
- Conteúdo do arquivo (expressão, clique)
Converter para configuração do corpo do PDF

O .html A extensão no nome do arquivo indica ao PDF4me qual renderizador usar. Enviar .docx, .xlsx, .png, ou .jpg Com a mesma facilidade, a mesma ação resolve todos os problemas.
Etapa 4: Adicionar à variável de matriz (corpo do e-mail)
Fluxo até o momento: Gatilho + Inicializar variável + Converter para corpo do PDF + Anexar (corpo do e-mail).
Empurre o PDF do corpo convertido para o email matriz como página 1.
- Clique + Novo passo, escolha Adicionar à variável de matriz.
- Renomear a ação para Adicionar à variável de matriz (corpo do e-mail) Para maior clareza.
- Configurar:
- Nome:
email - Valor (expressão):
base64ToBinary(body('Convert_to_PDF_Body')?['$content'])
- Nome:
Adicionar configuração ao corpo do e-mail

Passo 5: Como percorrer todos os anexos e converter cada um deles?
Fluxo até o momento: Gatilho + Inicializar variável + Converter para corpo do PDF + Anexar (corpo do e-mail) + Aplicar a cada.
Percorra cada anexo, converta cada um para PDF e anexe-os em sequência para que a mesclagem final respeite a ordem dos anexos.
Etapa 5a: Aplicar a cada um (escolha a fonte)
- Clique + Novo passo, escolha Aplicar a cada um.
- Configurar:
- Selecione uma saída das etapas anteriores. (expressão):
triggerOutputs()?['body/attachments']
- Selecione uma saída das etapas anteriores. (expressão):

Etapa 5b: Converter para PDF (o anexo)
- Dentro do loop, clique Adicionar uma ação, escolha PDF4me: Converter para PDF.
- Configurar:
- Conteúdo do arquivo (expressão):
base64ToBinary(items('Apply_to_each')?['contentBytes']) - Nome do arquivo (conteúdo dinâmico): escolha nome Aplique a cada item atual
- Conteúdo do arquivo (expressão):

O nome O token de conteúdo dinâmico é resolvido em tempo de execução para items('Apply_to_each')?['name']Assim, cada anexo é convertido usando seu nome de arquivo original. O PDF4me lê a extensão para escolher o renderizador correto.

Etapa 5c: Adicionar à variável de matriz (o anexo convertido)
- Abaixo, a conversão para PDF ocorre dentro do mesmo loop. Adicionar uma ação, escolha Adicionar à variável de matriz.
- Configurar:
- Nome:
email - Valor (expressão):
base64ToBinary(body('Convert_to_PDF')?['$content'])
- Nome:

Os dois nomes de propriedade são importantes. Os bytes dos anexos do Outlook estão ativos em bytes de conteúdoO PDF4me Converter para saída em PDF continua funcionando. $contentAmbos são em base64. Mantenha os nomes corretos ao colar as expressões e o loop funcionará perfeitamente.
Etapa 6: Mesclar vários arquivos PDF em um único arquivo PDF compactado.
Fluxo até o momento: Gatilho + Inicializar variável + Converter para corpo do PDF + Anexar (corpo) + Aplicar a cada + Mesclar vários PDFs.
O todo email O array (primeiro o PDF do corpo do arquivo, depois os PDFs dos anexos na ordem em que foram anexados) é processado em uma única chamada Merge.
- Abaixo, clique em Aplicar a cada loop. + Novo passo, procurar PDF4me, escolha Mesclar vários arquivos PDF em um único arquivo PDF..
- Configurar:
- Corpo/Conteúdo do documento: escolha o
emailtoken variável - Nome do arquivo de saída:
Email Attachment Merge Output.pdf
- Corpo/Conteúdo do documento: escolha o
Configuração da ação de mesclagem

Etapa 7: Por que usar um nome de arquivo com carimbo de data/hora para o arquivo compactado?
Fluxo até o momento: Acionar + Inicializar variável + Converter para corpo do PDF + Anexar + Aplicar a cada + Mesclar + Criar arquivo.
Salve o PDF consolidado no Dropbox com um nome de arquivo com carimbo de data/hora UTC, para que cada entrada do arquivo seja um arquivo novo e classificável. Dois e-mails para o mesmo endereço no mesmo segundo são raros o suficiente para que isso proporcione unicidade eficaz sem a necessidade de incorporar IDs de mensagem.
- Clique + Novo passo, escolha Dropbox: Criar arquivo.
- Configurar:
- Caminho da pasta:
/blog data/merge blog template/output - Nome do arquivo (expressão, clique)
fx):concat('merge-', formatDateTime(utcNow(), 'yyyyMMdd-HHmmss'), '.pdf') - Conteúdo do arquivo: escolha o Conteúdo do arquivo token da ação Mesclar vários PDFs
- Caminho da pasta:
Expressão do nome do arquivo

Ação final com conteúdo do arquivo mapeado

Dica para caixas de entrada com alto volume de mensagens. Para caixas de correio que recebem mais de 10 e-mails por minuto, adicione um pequeno hash do ID da mensagem na Internet para garantir a exclusividade: concat('merge-', formatDateTime(utcNow(), 'yyyyMMdd-HHmmss'), '-', substring(triggerOutputs()?['body/internetMessageId'], 0, 8), '.pdf')Rastreamento de auditoria ainda legível, colisões impossíveis.
Execute o fluxo e verifique.
- Salvar o fluxo no canto superior direito.
- Envie um e-mail com uma mensagem contendo um ou mais anexos para o endereço monitorado.
- Abrir Histórico de execuçãoO gatilho deve disparar em poucos segundos.
- Abra o Dropbox em
/blog data/merge blog template/output/Um arquivo chamadomerge-YYYYMMDD-HHmmss.pdfexiste. - Abra o PDF. A página 1 contém o texto principal. Da página 2 em diante, cada anexo é exibido na íntegra, na ordem em que foi anexado.
O que você construiu exatamente? Um fluxo de trabalho automatizado de e-mail para arquivamento. Cada mensagem com anexos é transformada em um único PDF consolidado, primeiro o corpo da mensagem e depois os anexos na ordem correta, com registro de data e hora para evitar conflitos, e salvo em uma pasta compartilhada que sua equipe de gestão de documentos ou auditores podem pesquisar. O mesmo processo funciona para dois ou vinte anexos, sem qualquer alteração.
Variações comuns que você pode adicionar sem reconstruir
endsWith(toLower(items('Apply_to_each')?['name']), '.pdf')Ignora assinaturas de e-mail e anexos de imagem embutidos.PDF/A-2b após a fusão. O PDF arquivado está em conformidade com a norma ISO 19005, adequado para fins legais e para submissão a órgãos reguladores.Arquivo de e-mails: PDF vs EML
| Aspecto | PDF consolidado (este fluxo) | Exportação EML bruta |
|---|---|---|
| Universalmente legível | Sim, qualquer leitor de PDF. | Não, precisa do Outlook ou de um cliente compatível. |
| Pesquisar por conteúdo | Sim, compatível com OCR. | Limitado, apenas para o corpo |
| Inclui anexos | Sim, em linha como páginas | Sim, como um fluxo binário |
| Correspondência do formato de auditoria | Aceita SOX, GDPR, HIPAA e FINRA | Frequentemente rejeitado |
| À prova de adulteração | Sim, se a Assinatura Digital for adicionada. | Facilmente editável em qualquer editor. |
| Tamanho do arquivo | Maior (todas as páginas renderizadas) | Menor (sem renderização) |
| Pipeline de retenção | Um PDF por e-mail, fácil de encadear. | O formato EML requer um contêiner. |
Perguntas frequentes
Como faço para acionar esse fluxo em uma caixa de correio compartilhada em vez de uma caixa de entrada pessoal?
Substitua o Quando um novo e-mail chega (V3) acionar com Quando um novo e-mail chega em uma caixa de correio compartilhada (V2)Passe o endereço da caixa de correio como o Endereço original da caixa postal campo. O restante do fluxo permanece idêntico, cada referência de anexo e expressão de corpo é resolvida da mesma maneira.
E se um e-mail não tiver anexos?
O gatilho Somente com anexos Sim O filtro impede que o fluxo seja acionado em e-mails que contenham apenas o corpo da mensagem. Se você também quiser arquivar e-mails que contenham apenas o corpo da mensagem, defina esse filtro como "Não" e envolva o loop "Aplicar a cada" em uma condição: execute-o somente quando length(triggerOutputs()?['body/attachments']) é maior que zero. A ação de mesclagem ainda funcionará com apenas um PDF do corpo do arquivo na matriz, produzindo um arquivo de página única.
Como faço para incluir o remetente, o assunto e a data de recebimento na página 1 do arquivo?
Antes da etapa 3, adicione um Compor ação com um preâmbulo HTML:
<h2>From: @{triggerOutputs()?['body/from']}</h2>
<h2>Subject: @{triggerOutputs()?['body/subject']}</h2>
<p>Received: @{triggerOutputs()?['body/receivedDateTime']}</p>
<hr>
@{triggerOutputs()?['body/body']}
Em seguida, aponte o Conteúdo do Arquivo da etapa 3 para a saída do Compose. A página 1 agora contém metadados de cabeçalho pesquisáveis.
Isso funcionará com e-mails HTML que contenham imagens embutidas?
Sim. O PDF4me Converter para PDF renderiza HTML com conteúdo embutido. <img src="cid:..."> referências e imagens base64 incorporadas. Do Outlook body/body Inclui o HTML completo com conteúdo embutido, de forma que o PDF renderizado preserve a fidelidade visual do que o destinatário viu.
Quanto tempo leva para o fluxo percorrer seu curso?
Em um arquivo DOCX de uma página, leva aproximadamente de 10 a 15 segundos por anexo, mais 5 a 10 segundos para o gatilho e o upload final. Um e-mail típico com dois anexos é concluído em 35 a 45 segundos do início ao fim. A opção "Aplicar a cada" do Power Automate é executada sequencialmente por padrão para gerar uma saída ordenada; se a ordem não for importante e você precisar de velocidade, defina a opção correspondente. Controle de Concorrência para 20 nas configurações do loop.
Solução de problemas
Uma das opções de adicionar ao array Valor expressões não estão envolvidas em base64ParaBinário(...)Cada push (corpo e anexos) precisa da conversão. Reabra ambas as ações de Anexar, mude para o editor de expressões e confirme se as expressões estão corretas. base64ToBinary(body('Convert_to_PDF_Body')?['$content']) e base64ToBinary(body('Convert_to_PDF')?['$content']) literalmente.
A ação Converter para Corpo em PDF não recebeu HTML válido. Verifique o gatilho. Incluir anexos Sim, permaneceu (sem ele, às vezes o corpo chega vazio) e isso Conteúdo do arquivo resolve para triggerOutputs()?['body/body'], não corpo/pré-visualização do corpo.
O padrão Aplicar a cada um Execuções em paralelo podem embaralhar a ordem de acréscimo. Abra o loop. Configurações e definir Controle de Concorrência Grau de paralelismo com 1O loop agora é executado sequencialmente e os anexos chegam na ordem do array.
A resolução do carimbo de data/hora é de um segundo. Para caixas de entrada com alto volume de mensagens, adicione o hash do ID da mensagem da Internet: concat('merge-', formatDateTime(utcNow(), 'yyyyMMdd-HHmmss'), '-', substring(triggerOutputs()?['body/internetMessageId'], 0, 8), '.pdf').
Próximos passos
O mesmo padrão de sete etapas (disparar, inicializar matriz, converter corpo, repetir, converter e anexar, mesclar e salvar com carimbo de data/hora) funciona para qualquer automação de "e-mail com anexos em um único PDF". Envie uma e cada mensagem recebida se tornará automaticamente uma entrada de arquivo pesquisável, classificável e pronta para auditoria.