Convierta cada correo electrónico entrante en un archivo PDF listo para auditoría en Power Automate: un flujo de trabajo de Outlook en 7 pasos.

Archivo de correo electrónico a PDF es un flujo de Power Automate que se activa con cada nuevo correo electrónico entrante de Outlook, convierte el cuerpo del mensaje y cada archivo adjunto a PDF, los combina en un PDF consolidado con marca de tiempo y escribe el resultado en Dropbox para su retención a largo plazo por cumplimiento normativo. Siete acciones. Sin código. Un archivo por correo electrónico, primero el cuerpo y luego los archivos adjuntos en orden. La salida se llama merge-YYYYMMDD-HHmmss.pdf de modo que cada entrada del archivo se puede ordenar de forma única.
Los equipos de auditoría, los responsables de gestión de registros y los oficiales de cumplimiento necesitan que la evidencia de correo electrónico se conserve en un formato a prueba de manipulaciones y con capacidad de búsqueda que resista las políticas de retención de Exchange. La exportación nativa de Outlook es manual, archivo por archivo, y pierde los archivos adjuntos en archivos separados. Este tutorial crea la alternativa sin código: cada correo electrónico que llega se convierte automáticamente en un único PDF consolidado, con el original. .eml y los archivos adjuntos aún en Outlook para su retención legal, pero el PDF de archivo como copia autorizada de los registros.
El disparador de Outlook se activa con cada correo electrónico entrante a una dirección supervisada. Una variable de matriz llamada correo electrónico abre. PDF4me Convertir a PDF primero convierte el cuerpo HTML en PDF (se convierte en la página 1). Aplicar a cada uno PDF4me recorre cada archivo adjunto, lo convierte a PDF utilizando los renderizadores de Aspose Words/Cells/Slides y lo añade sucesivamente. Combinar varios archivos PDF consume toda la matriz y emite un PDF consolidado. Dropbox lo escribe como fusionar-20260611-103323.pdf. Cuerpo primero, archivos adjuntos en orden, con marca de tiempo, calidad de archivo.
Preguntas y respuestas basadas en el porqué
¿Por qué convertir a PDF para archivar en lugar de guardar el archivo .eml? Los archivos EML requieren Outlook o un lector compatible para abrirse, incluyen archivos adjuntos en un flujo binario que los auditores no pueden analizar y dependen del formato del cliente de correo del remitente. Un único PDF consolidado es legible universalmente, compatible con OCR, incluye archivos adjuntos y cumple con el formato de retención que exigen la mayoría de las auditorías de descubrimiento legal y SOX/GDPR.
¿Por qué usar una sola variable de matriz para el cuerpo y los archivos adjuntos juntos? La acción «Combinar varios archivos PDF» requiere una única colección ordenada. Inicialícela una vez, agregue el cuerpo en el paso 4, agregue cada archivo adjunto convertido en el paso 5, y la matriz tendrá exactamente el orden de documentos que necesita el archivo (primero el cuerpo, luego los archivos adjuntos en el orden de envío). Dos matrices separadas obligarían a realizar una acción de «Componer» posteriormente solo para concatenarlas.
Por qué base64aBinario ¿En cada empujón? PDF4me Convertir a PDF devuelve su salida como una cadena base64 en $contenidoLos archivos adjuntos de Outlook llegan como base64 en bytes de contenidoLa fusión de varios archivos PDF requiere búferes binarios, no cadenas base64. Lo mismo base64ToBinary(...) La llamada conecta ambas fuentes, solo que apunta a nombres de propiedades diferentes. Se omite la conversión y la acción de fusión genera errores con "contenido no válido".
¿Por qué un nombre de salida con marca de tiempo? Dos correos electrónicos enviados a la misma dirección en el mismo minuto chocarían debido a un nombre de archivo constante. concat('merge-', formatDateTime(utcNow(), 'yyyyMMdd-HHmmss'), '.pdf') produce nombres UTC de precisión de segundos como fusionar-20260611-103323.pdf: ordenable lexicográficamente, de lectura instantánea y único por su construcción. A los auditores les encanta este formato.
Lo que obtendrás
Aporte: Cualquier correo electrónico entrante a la dirección de Outlook supervisada (aquí) [email protected]) con uno o más archivos adjuntos. Este tutorial utiliza un cuerpo de mensaje corto ("Hola, espero que estés bien...") y dos archivos adjuntos DOCX (3Page.docx, Docx_2Pages.docx). Producción: Un único archivo PDF consolidado en /blog data/merge blog template/output/, llamado merge-YYYYMMDD-HHmmss.pdfLa página 1 es el cuerpo del texto. De la página 2 en adelante se encuentran los anexos en orden de presentación, generados mediante Aspose Words.
El correo electrónico entrante

La carpeta de archivo después de dos ejecuciones

Página 1 de un archivo PDF combinado

Lo que necesitas
- Power Automate. Abrir Power Automate. Cualquier plan con conectores premium (PDF4me Connect es premium).
- Clave API de PDF4me. Obtén tu clave APIConéctalo la primera vez que añadas una acción de PDF4me.
- Office 365 Outlook. Para el activador V3 "Cuando llega un nuevo correo electrónico" y para leer el contenido adjunto (en bytes). Cualquier bandeja de entrada contra la que el conector pueda autenticarse funciona.
- Dropbox (o SharePoint, OneDrive, Google Drive). Para el destino del archivo.
- Un correo electrónico de prueba con archivos adjuntosEl tutorial utiliza dos ejemplos DOCX. 3 páginas.docx y Docx_2Páginas.docx.
Primero, obtén las muestras y el resultado esperado. Descarga ambos archivos DOCX, adjúntalos a un correo electrónico rápido a tu dirección monitoreada y luego publica el flujo. Tu primera ejecución debería producir un fusionar-AAAAMMDD-HHmmss.pdf que reproduce exactamente la muestra vinculada (solo difiere la marca de tiempo).
El flujo de un vistazo
- Outlook: Cuando llega un nuevo correo electrónico (V3) (desencadenar).
- Inicializar variable llamado
email(Arreglo). - PDF4me: Convertir a PDF (Cuerpo)Lee el cuerpo HTML y devuelve un PDF.
- Agregar a la variable de matriz con
base64ToBinaryen el cuerpo modificado. - Aplicar a cada uno en
triggerOutputs()?['body/attachments']:- PDF4me: Convertir a PDF el archivo adjunto.
- Agregar a la variable de matriz con
base64ToBinaryen el PDF convertido.
- PDF4me: Combina varios archivos PDF en un único archivo PDF.. Matriz de entrada, un PDF de salida.
- Dropbox: Crear archivoLa expresión del nombre del archivo añade la marca de tiempo UTC.
Descripción general del flujo completo

Siete acciones. PDF4me interviene en el flujo tres veces: convertir el cuerpo, convertir cada archivo adjunto, fusionar todo.
Campos de archivos adjuntos de Outlook (referencia)
Perspectivas Cuando llega un nuevo correo electrónico V3 El disparador expone estos campos adjuntos que usted asigna al convertidor:
| Campo | Tipo | Expresión de la fuente | Lo que contiene |
|---|---|---|---|
name | cadena | items('Apply_to_each')?['name'] | Nombre de archivo original incluyendo la extensión (Invoice.docx) |
contentBytes | cadena base64 | items('Apply_to_each')?['contentBytes'] | Contenido binario del archivo adjunto, codificado en base64. |
contentType | cadena | items('Apply_to_each')?['contentType'] | Tipo MIME (application/vnd.openxmlformats-officedocument.wordprocessingml.document) |
size | entero | items('Apply_to_each')?['size'] | Bytes, útil para filtrar archivos adjuntos grandes. |
isInline | booleano | items('Apply_to_each')?['isInline'] | Cierto para imágenes en línea incrustadas en el cuerpo; generalmente se filtran. |
PDF4me Convertir a PDF lee la extensión del archivo name para elegir el renderizador adecuado (.docx → Supongamos palabras, .xlsx → Asegurar las células, .pptx → Aspose admite de forma nativa diapositivas, imágenes y archivos PDF.
Paso 1: ¿Cómo se puede monitorizar la bandeja de entrada de Outlook para detectar correos electrónicos entrantes?
Flujo hasta ahora: Solo el disparador.
- En Power Automate clic Crear, elegir Flujo de nube automatizado.
- Nombre el flujo (p. ej.
Email Archive to PDF), elegir Office 365 Outlook: Cuando llega un nuevo correo electrónico (V3) como disparador, haga clic Crear. - Conectar Tu buzón de Office 365.
- Expandir Parámetros avanzados y haga clic Mostrar todo para mostrar las opciones de filtrado.
- Configurar:
- A:
[email protected](filtrar para que solo el correo dirigido a esta dirección active el flujo) - Incluir archivos adjuntos:
Yes - Solo con archivos adjuntos:
Yes
- A:
Configuración del disparador

Consejo. Solo con archivos adjuntos Sí es lo que evita que el flujo se active con cada notificación interna, invitación de calendario o respuesta automatizada. Combinar con un A filtrar en un alias de archivo dedicado (por ejemplo, [email protected]) para una dirección de correo electrónico limpia que solo reciba el correo que realmente desea archivar.
Paso 2: Inicializar la variable de correo electrónico
Flujo hasta ahora: Disparador más variable de inicialización.
Abra una matriz vacía para recopilar el PDF del cuerpo y todos los PDF adjuntos.
- Haga clic + Nuevo paso, elegir Inicializar variable.
- Configurar:
- Nombre:
email - Tipo:
Array - Valor: dejar en blanco
- Nombre:
Inicializar la configuración de variables

Paso 3: ¿Cómo convierte PDF4me el cuerpo del correo electrónico a PDF?
Flujo hasta ahora: Disparador más inicializar variable más convertir a cuerpo PDF.
El desencadenador de Outlook emite el cuerpo del mensaje como HTML en body/bodyPDF4me Convert to PDF lee HTML directamente, por lo que toda la conversión se realiza en una sola llamada.
- Haga clic + Nuevo paso, buscar PDF4me, elegir Convertir a PDF.
- Rebautizar la acción de Convertir a PDF Cuerpo Así, la acción "Convertir a PDF" del paso 5 tendrá más adelante su propio nombre limpio.
- Conectar PDF4me Conéctate con tu clave API (solo la primera vez).
- Configurar:
- Contenido del archivo (expresión, clic)
fx):triggerOutputs()?['body/body'] - Nombre del archivo:
email-body.html
- Contenido del archivo (expresión, clic)
Convertir a PDF Configuración del cuerpo

El .html La extensión del nombre del archivo le indica a PDF4me qué motor de renderizado usar. Enviar .docx, .xlsx, .png, o .jpg Con la misma facilidad, la misma acción sirve para todos.
Paso 4: Agregar a la variable de matriz (Cuerpo del correo electrónico)
Flujo hasta ahora: Disparador más Inicializar variable más Convertir a cuerpo PDF más Anexar (cuerpo del correo electrónico).
Empuja el PDF del cuerpo convertido hacia el email matriz como página 1.
- Haga clic + Nuevo paso, elegir Agregar a la variable de matriz.
- Rebautizar la acción de Agregar a la variable de matriz (cuerpo del correo electrónico) para mayor claridad.
- Configurar:
- Nombre:
email - Valor (expresión):
base64ToBinary(body('Convert_to_PDF_Body')?['$content'])
- Nombre:
Configuración del cuerpo del correo electrónico

Paso 5: ¿Cómo se recorre cada archivo adjunto y se convierte cada uno de ellos?
Flujo hasta ahora: Disparador más Inicializar variable más Convertir a cuerpo PDF más Anexar (cuerpo del correo electrónico) más Aplicar a cada uno.
Recorre cada archivo adjunto, conviértelo a PDF y agrégalo uno por uno para que la fusión final respete el orden de los archivos adjuntos.
Paso 5a: Aplicar a cada uno (seleccione la fuente)
- Haga clic + Nuevo paso, elegir Aplicar a cada uno.
- Configurar:
- Seleccione una salida de los pasos anteriores. (expresión):
triggerOutputs()?['body/attachments']
- Seleccione una salida de los pasos anteriores. (expresión):

Paso 5b: Convertir a PDF (el archivo adjunto)
- Dentro del bucle, haga clic Agregar una acción, elegir PDF4me: Convertir a PDF.
- Configurar:
- Contenido del archivo (expresión):
base64ToBinary(items('Apply_to_each')?['contentBytes']) - Nombre del archivo (contenido dinámico): seleccionar nombre Aplicar a cada elemento actual
- Contenido del archivo (expresión):

El nombre El token de contenido dinámico se resuelve en tiempo de ejecución. items('Apply_to_each')?['name']Por lo tanto, cada archivo adjunto se convierte utilizando su nombre de archivo original. PDF4me lee la extensión para seleccionar el motor de renderizado adecuado.

Paso 5c: Agregar a la variable de matriz (el archivo adjunto convertido)
- A continuación, convertir a PDF dentro del mismo bucle, Agregar una acción, elegir Agregar a la variable de matriz.
- Configurar:
- Nombre:
email - Valor (expresión):
base64ToBinary(body('Convert_to_PDF')?['$content'])
- Nombre:

Los nombres de las dos propiedades son importantes. Los bytes adjuntos de Outlook siguen activos bytes de contenidoPDF4me Convertir a salida PDF sigue en funcionamiento $contenidoAmbos son en base64. Mantén los nombres correctos al pegar las expresiones y el bucle funcionará sin problemas.
Paso 6: Combinar varios archivos PDF en un único archivo PDF.
Flujo hasta ahora: Disparador más Inicializar variable más Convertir a cuerpo PDF más Anexar (cuerpo) más Aplicar a cada uno más Combinar varios PDF.
Todo email La matriz (primero el PDF del cuerpo, luego los PDF adjuntos en el orden en que se adjuntan) se introduce en una única llamada a Merge.
- Debajo de Aplicar a cada bucle, haga clic en + Nuevo paso, buscar PDF4me, elegir Combinar varios archivos PDF en un único archivo PDF..
- Configurar:
- Cuerpo/Contenido del documento: elige el
emailtoken variable - Nombre del archivo de salida:
Email Attachment Merge Output.pdf
- Cuerpo/Contenido del documento: elige el
Configuración de acción de fusión

Paso 7: ¿Por qué usar un nombre de archivo con marca de tiempo para el archivo comprimido?
Flujo hasta ahora: Disparador más Inicializar variable más Convertir a cuerpo PDF más Anexar más Aplicar a cada uno más Combinar más Crear archivo.
Guarda el PDF consolidado en Dropbox con un nombre de archivo con marca de tiempo UTC para que cada entrada del archivo sea un archivo nuevo y ordenable. El envío de dos correos electrónicos a la misma dirección en el mismo segundo es tan poco frecuente que esto garantiza una unicidad efectiva sin necesidad de incluir identificadores de mensaje.
- Haga clic + Nuevo paso, elegir Dropbox: Crear archivo.
- Configurar:
- Ruta de la carpeta:
/blog data/merge blog template/output - Nombre del archivo (expresión, clic)
fx):concat('merge-', formatDateTime(utcNow(), 'yyyyMMdd-HHmmss'), '.pdf') - Contenido del archivo: elige el Contenido del archivo token de la acción Combinar varios PDF
- Ruta de la carpeta:
expresión de nombre de archivo

Acción final con el contenido del archivo asignado.

Consejo para bandejas de entrada con alto volumen de correos electrónicos. Para los buzones de correo que reciben más de 10 correos electrónicos por minuto, agregue un hash corto del ID de mensaje de Internet del mensaje para garantizar su unicidad: concat('merge-', formatDateTime(utcNow(), 'yyyyMMdd-HHmmss'), '-', substring(triggerOutputs()?['body/internetMessageId'], 0, 8), '.pdf')El registro de auditoría sigue siendo legible, las colisiones son imposibles.
Ejecuta el flujo y verifica.
- Ahorrar el flujo en la parte superior derecha.
- Envíe un mensaje con uno o más archivos adjuntos a la dirección de correo electrónico monitorizada.
- Abierto Historial de ejecuciónEl gatillo debería dispararse en cuestión de segundos.
- Abrir Dropbox en
/blog data/merge blog template/output/. Un archivo llamadomerge-YYYYMMDD-HHmmss.pdfestá ahí. - Abra el PDF. La página 1 contiene el texto principal. A partir de la página 2, se muestran todos los archivos adjuntos, en su totalidad y en el orden en que aparecen.
¿Qué construiste exactamente? Un sistema automatizado de archivado de correo electrónico. Cada mensaje con archivos adjuntos se convierte en un PDF consolidado, con el cuerpo del mensaje primero y luego los archivos adjuntos en orden, con marca de tiempo para evitar conflictos. Se guarda en una carpeta compartida que su equipo de gestión de registros o auditores pueden consultar. El mismo proceso funciona con dos o veinte archivos adjuntos sin ningún cambio.
Variaciones comunes que puedes agregar sin reconstruir
terminaCon(toLower(items('Aplicar_a_cada_elemento')?['nombre']), '.pdf')Omite las firmas de correo electrónico y los archivos adjuntos de imágenes en línea.PDF/A-2b Tras la fusión, el PDF archivado cumple con la norma ISO 19005 y es apto para su conservación legal y presentación ante organismos reguladores.Archivo de correo electrónico: PDF vs EML
| Aspecto | PDF consolidado (este flujo) | Exportación EML sin procesar |
|---|---|---|
| De legibilidad universal | Sí, cualquier lector de PDF | No, necesita Outlook o un cliente compatible. |
| Buscar por contenido | Sí, compatible con OCR | Edición limitada, solo carrocería |
| Incluye archivos adjuntos | Sí, en línea como páginas | Sí, como flujo binario |
| Coincidencia de formato de auditoría | SOX, GDPR, HIPAA, FINRA aceptan | A menudo rechazado |
| A prueba de manipulaciones | Sí, si se añade el letrero digital. | Se puede editar fácilmente en cualquier editor. |
| Tamaño del archivo | Más grande (todas las páginas renderizadas) | Más pequeño (sin renderizado) |
| Canal de retención | Un PDF por correo electrónico, fácil de encadenar. | EML requiere formato de contenedor. |
Preguntas frecuentes
¿Cómo puedo activar este flujo en un buzón compartido en lugar de en una bandeja de entrada personal?
Reemplazar el Cuando llega un nuevo correo electrónico (V3) disparador con Cuando llega un nuevo correo electrónico a un buzón compartido (V2). Pase la dirección del buzón como la Dirección original del buzón campo. El resto del flujo permanece idéntico, cada referencia de adjunto y expresión de cuerpo se resuelve de la misma manera.
¿Qué ocurre si un correo electrónico no tiene archivos adjuntos?
El disparador Solo con archivos adjuntos Sí El filtro impide que el flujo se active en correos electrónicos que solo contienen el cuerpo. Si también desea archivar correos electrónicos que solo contienen el cuerpo, configure ese filtro en No y envuelva el bucle Aplicar a cada uno en una Condición: ejecutarlo solo cuando length(triggerOutputs()?['body/attachments']) es mayor que cero. La acción de fusión seguirá funcionando con un solo PDF del cuerpo en la matriz, produciendo un archivo de una sola página.
¿Cómo incluyo el remitente, el asunto y la fecha de recepción en la página 1 del archivo?
Antes del paso 3, agregue un Componer acción con un 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']}
A continuación, en el paso 3, configure el contenido del archivo para que apunte a la salida de Compose. La página 1 ahora contiene metadatos de encabezado que se pueden buscar.
¿Funcionará esto con correos electrónicos HTML que contengan imágenes insertadas?
Sí. PDF4me Convert to PDF genera HTML con inline <img src="cid:..."> Referencias e imágenes base64 incrustadas. Outlook body/body Incluye el código HTML completo con contenido incrustado, por lo que el PDF resultante conserva la fidelidad visual de lo que vio el destinatario.
¿Cuánto tiempo tarda en ejecutarse el flujo?
Aproximadamente de 10 a 15 segundos por archivo adjunto en un DOCX de una página, más de 5 a 10 segundos para el activador y la carga final. Un correo electrónico típico con 2 archivos adjuntos se completa en 35 a 45 segundos de principio a fin. La función Aplicar a cada elemento de Power Automate se ejecuta secuencialmente de forma predeterminada para obtener una salida ordenada; si el orden no importa y necesita velocidad, configure Control de concurrencia a 20 en la configuración del bucle.
Solución de problemas
Una de las opciones para agregar a la matriz Valor expresiones no está envuelto en base64ToBinary(...)Cada envío (cuerpo y adjuntos) necesita la conversión. Vuelva a abrir ambas acciones de Agregar, cambie al editor de expresiones y confirme que las expresiones estén base64ToBinary(body('Convert_to_PDF_Body')?['$content']) y base64ToBinary(body('Convertir_a_PDF')?['$content']) literal.
La acción Convertir a PDF Body no recibió HTML real. Compruebe el desencadenador. Incluir archivos adjuntos se quedó Sí (sin ella el cuerpo a veces llega vacío) y que Contenido del archivo resuelve triggerOutputs()?['body/body'], no cuerpo/vista previa del cuerpo.
El valor predeterminado Aplicar a cada uno se ejecuta en paralelo, lo que puede alterar el orden de adición. Abra el bucle Ajustes y establecer Control de concurrencia Grado de paralelismo con 1El bucle ahora se ejecuta de forma secuencial y los archivos adjuntos se colocan en el orden de la matriz.
La resolución de la marca de tiempo es de un segundo. Para bandejas de entrada con alto volumen, agregue el hash del ID del mensaje de Internet: concat('merge-', formatDateTime(utcNow(), 'yyyyMMdd-HHmmss'), '-', substring(triggerOutputs()?['body/internetMessageId'], 0, 8), '.pdf').
Próximos pasos
El mismo patrón de siete pasos (activar, inicializar la matriz, convertir el cuerpo, volver a convertir y añadir, fusionar y guardar con una marca de tiempo) funciona para cualquier automatización de "correo electrónico y archivos adjuntos en un PDF". Al enviar uno, cada mensaje entrante se convierte automáticamente en una entrada de archivo con capacidad de búsqueda, ordenación y lista para auditoría.