Transformez chaque e-mail entrant en une archive PDF prête à être auditée grâce à Power Automate : un flux de travail Outlook en 7 étapes

Archive de courriel vers PDF Il s'agit d'un flux Power Automate qui se déclenche à chaque nouvel e-mail Outlook entrant, convertit le corps du message et chaque pièce jointe en PDF, les fusionne en un seul PDF consolidé horodaté et enregistre le résultat dans Dropbox pour une conservation conforme à long terme. Sept actions. Aucun code. Un fichier par e-mail : le corps en premier, puis les pièces jointes dans l'ordre. Le fichier de sortie est nommé merge-YYYYMMDD-HHmmss.pdf Ainsi, chaque entrée d'archive est triable de manière unique.
Les équipes d'audit, les responsables de la gestion des archives et les responsables de la conformité ont besoin de preuves par courriel conservées dans un format infalsifiable et consultable, résistant aux politiques de conservation d'Exchange. L'exportation native d'Outlook est manuelle, fichier par fichier, et perd les pièces jointes qui sont déplacées vers des fichiers séparés. Ce guide propose une alternative sans code : chaque courriel reçu est automatiquement converti en un seul PDF consolidé, avec l'original. .eml et les pièces jointes toujours dans Outlook pour conservation légale, mais le PDF d'archive fait office de copie de référence.
Un déclencheur Outlook s'active à chaque e-mail entrant vers une adresse surveillée. Une variable de type tableau nommée e-mail ouvre. PDF4me Convertir en PDF transforme d'abord le corps HTML en PDF (qui devient la page 1). Appliquer à chaque PDF4me parcourt chaque pièce jointe, la convertit en PDF à l'aide des moteurs de rendu Aspose Words/Cells/Slides, puis les ajoute une à une. Fusionner plusieurs fichiers PDF consomme l'ensemble du tableau et génère un seul PDF consolidé. Dropbox l'enregistre comme fusion-20260611-103323.pdfCorps du texte en premier, pièces jointes dans l'ordre, horodatées, qualité archive.
Questions et réponses basées sur le pourquoi
Pourquoi convertir au format PDF pour l'archivage au lieu d'enregistrer le fichier .eml ? Les fichiers EML nécessitent Outlook ou un lecteur compatible pour être ouverts, intègrent les pièces jointes dans un flux binaire inaccessible aux auditeurs et dépendent du formatage du client de messagerie de l'expéditeur. Un seul fichier PDF consolidé est universellement lisible, compatible avec la reconnaissance optique de caractères (OCR), inclut les pièces jointes et correspond au format de conservation exigé par la plupart des audits de découverte de preuves et des audits SOX/RGPD.
Pourquoi une seule variable de type tableau pour le corps et les pièces jointes ? L'action Fusionner plusieurs fichiers PDF requiert une collection unique et ordonnée. Initialisez-la une seule fois, ajoutez le corps du document à l'étape 4, puis chaque pièce jointe convertie à l'étape 5. Le tableau obtenu correspond ainsi à l'ordre exact des documents requis pour l'archivage (corps en premier, puis pièces jointes dans l'ordre d'envoi). Deux tableaux distincts nécessiteraient une action Composer ultérieurement pour les concaténer.
Pourquoi base64ToBinary à chaque poussée ? PDF4me Convert to PDF renvoie sa sortie sous forme de chaîne base64. $contentLes pièces jointes Outlook arrivent au format base64 sur contenuBytesLa fusion de plusieurs fichiers PDF nécessite des tampons binaires, et non des chaînes base64. base64ToBinary(...) L'appel fait transiter les deux sources, mais pointe vers des noms de propriétés différents. Ignorer la conversion et l'action de fusion génère des erreurs de « contenu invalide ».
Pourquoi un nom de sortie horodaté ? Deux courriels envoyés à la même adresse dans la même minute entreraient en conflit en raison d'un nom de fichier constant. concat('merge-', formatDateTime(utcNow(), 'yyyyMMdd-HHmmss'), '.pdf') produit des noms UTC de seconde précision comme fusion-20260611-103323.pdf: triable par ordre lexicographique, lisible instantanément et unique par nature. Les auditeurs adorent ce format.
Ce que vous obtiendrez
Saisir: Tout courriel entrant à l'adresse Outlook surveillée (ici) [email protected]) avec une ou plusieurs pièces jointes. Ce guide utilise un court corps de message (« Bonjour, j'espère que vous allez bien... ») et deux pièces jointes DOCX (3Page.docx, Docx_2Pages.docx). Sortir: Un seul PDF d'archive consolidé dans /blog data/merge blog template/output/, nommé merge-YYYYMMDD-HHmmss.pdfLa page 1 constitue le corps du texte. À partir de la page 2, chaque pièce jointe est présentée dans l'ordre, rendue à l'aide d'Aspose Words.
L'e-mail entrant

Le dossier d'archive après deux exécutions

Page 1 d'une archive PDF fusionnée

Ce dont vous avez besoin
- Power Automate. Ouvrir Power Automate. Tout forfait incluant des connecteurs premium (PDF4me Connect est premium).
- Clé API PDF4me. Obtenez votre clé APIConnectez-le la première fois que vous ajoutez une action PDF4me.
- Office 365 OutlookPour le déclencheur V3 « À l’arrivée d’un nouvel e-mail » et la lecture du contenu des pièces jointes (en octets), toute boîte de réception compatible avec le connecteur fonctionne.
- Dropbox (ou SharePoint, OneDrive, Google Drive). Pour la destination des archives.
- Un courriel de test avec pièces jointes. La démonstration utilise deux exemples DOCX. 3Page.docx et Docx_2Pages.docx.
Commencez par récupérer les échantillons et le résultat attendu. Téléchargez les deux fichiers DOCX, joignez-les à un courriel rapide à l'adresse surveillée, puis publiez le flux. Votre première exécution devrait produire un fusion-AAAAMMJJ-HHmmss.pdf qui reproduit exactement l'échantillon lié (seul l'horodatage diffère).
Aperçu du flux
- Outlook : Lorsqu’un nouveau courriel arrive (V3) (déclenchement).
- Variable d'initialisation nommé
email(Tableau). - PDF4me : Convertir en PDF (Corps)Lit le corps HTML et renvoie un PDF.
- Ajouter à la variable de tableau avec
base64ToBinarysur la carrosserie transformée. - Appliquer à chaque sur
triggerOutputs()?['body/attachments']:- PDF4me : Convertir en PDF la pièce jointe.
- Ajouter à la variable de tableau avec
base64ToBinarysur le PDF converti.
- PDF4me : Fusionner plusieurs fichiers PDF en un seul fichier PDFTableau en entrée, un PDF en sortie.
- Dropbox : Créer un fichierL'expression Nom de fichier horodatée en UTC.
Aperçu complet du flux

Sept actions. PDF4me intervient trois fois dans le flux : conversion du corps du document, conversion de chaque pièce jointe, fusion de l’ensemble.
Champs de pièces jointes Outlook (référence)
Perspectives Lorsqu'un nouvel e-mail arrive V3 Le déclencheur expose ces champs de pièces jointes que vous mappez dans le convertisseur :
| Champ | Taper | Expression source | Ce qu'il contient |
|---|---|---|---|
name | chaîne | items('Apply_to_each')?['name'] | Nom de fichier d'origine avec extension (Invoice.docx) |
contentBytes | chaîne de base64 | items('Apply_to_each')?['contentBytes'] | Contenu binaire de la pièce jointe, encodé en base64 |
contentType | chaîne | items('Apply_to_each')?['contentType'] | type MIME (application/vnd.openxmlformats-officedocument.wordprocessingml.document) |
size | entier | items('Apply_to_each')?['size'] | Octets, utiles pour filtrer les pièces jointes volumineuses |
isInline | booléen | items('Apply_to_each')?['isInline'] | Vrai pour les images intégrées au corps du texte ; généralement filtrées. |
PDF4me Convert to PDF lit l'extension de fichier. name pour choisir le bon moteur de rendu (.docx → Aspose Words, .xlsx → Aspose Cells, .pptx → Aspose Slides, images et PDF gérés nativement).
Étape 1 : Comment surveiller une boîte de réception Outlook pour les courriels entrants ?
Flux jusqu'à présent : Déclencheur uniquement.
- Dans Power Automate cliquez Créer, choisir Flux cloud automatisé.
- Nommez le flux (par exemple,
Email Archive to PDF), prendre Office 365 Outlook : Lorsqu’un nouveau courriel arrive (V3) comme déclencheur, cliquez Créer. - Connecter Votre boîte aux lettres Office 365.
- Développer Paramètres avancés et cliquez Afficher tout pour afficher les options de filtrage.
- Configure:
- À:
[email protected](Filtrer pour que seul le courrier adressé à cette adresse déclenche le flux) - Joindre les pièces jointes:
Yes - Uniquement avec pièces jointes:
Yes
- À:
Configuration du déclencheur

Conseil. Uniquement avec pièces jointes Oui c'est ce qui empêche le flux de se déclencher à chaque notification interne, invitation de calendrier ou réponse automatique. À combiner avec un À filtre sur un alias d'archive dédié (par exemple, [email protected]) pour une adresse de réception propre qui ne reçoit que le courrier que vous souhaitez réellement archiver.
Étape 2 : Initialiser la variable email
Flux jusqu'à présent : Déclencheur plus initialisation de la variable.
Ouvrez un tableau vide pour collecter le PDF principal et toutes les pièces jointes PDF.
- Cliquez + Nouvelle étape, prendre Variable d'initialisation.
- Configure:
- Nom:
email - Taper:
Array - Valeur: laisser vide
- Nom:
Initialiser la configuration des variables

Étape 3 : Comment PDF4me convertit-il le corps de l’e-mail en PDF ?
Flux jusqu'à présent : Déclencheur + Initialisation de variable + Conversion en corps PDF.
Le déclencheur Outlook émet le corps du message au format HTML sur body/bodyPDF4me Convert to PDF lit directement le HTML, la conversion complète se résume donc à un seul appel d'action.
- Cliquez + Nouvelle étape, recherche PDF4me, prendre Convertir en PDF.
- Rebaptiser l'action à Convertir en corps de PDF L'action « Convertir en PDF » de l'étape 5 reçoit donc ultérieurement un nom plus clair.
- Connecter PDF4me Connectez-vous avec votre clé API (première fois uniquement).
- Configure:
- Contenu du fichier (expression, clic)
fx):triggerOutputs()?['body/body'] - Nom de fichier:
email-body.html
- Contenu du fichier (expression, clic)
Convertir en configuration du corps PDF

Le .html L'extension du nom de fichier indique à PDF4me quel moteur de rendu utiliser. Envoyer .docx, .xlsx, .png, ou .jpg La même action permet de les régler tout aussi facilement.
Étape 4 : Ajouter au tableau de variables (corps de l’e-mail)
Flux jusqu'à présent : Déclencheur plus Initialiser la variable plus Convertir en corps PDF plus Ajouter (corps de l'e-mail).
Déplacez le PDF converti du corps sur le email tableau comme page 1.
- Cliquez + Nouvelle étape, prendre Ajouter à la variable de tableau.
- Rebaptiser l'action à Ajouter à la variable de tableau (corps de l'e-mail) pour plus de clarté.
- Configure:
- Nom:
email - Valeur (expression):
base64ToBinary(body('Convert_to_PDF_Body')?['$content'])
- Nom:
Ajouter la configuration du corps de l'e-mail

Étape 5 : Comment parcourir chaque pièce jointe et convertir chacune d’elles ?
Flux jusqu'à présent : Déclencher plus Initialiser la variable plus Convertir en corps PDF plus Ajouter (corps de l'e-mail) plus Appliquer à chaque.
Parcourez chaque pièce jointe, convertissez-la en PDF et ajoutez-les tour à tour afin que la fusion finale respecte l'ordre des pièces jointes.
Étape 5a : Appliquer à chaque (choisir la source)
- Cliquez + Nouvelle étape, prendre Appliquer à chaque.
- Configure:
- Sélectionnez une sortie parmi les étapes précédentes (expression):
triggerOutputs()?['body/attachments']
- Sélectionnez une sortie parmi les étapes précédentes (expression):

Étape 5b : Convertir au format PDF (pièce jointe)
- À l'intérieur de la boucle, cliquez Ajouter une action, prendre PDF4me : Convertir en PDF.
- Configure:
- Contenu du fichier (expression):
base64ToBinary(items('Apply_to_each')?['contentBytes']) - Nom de fichier (contenu dynamique) : sélectionner nom à partir de la section « Appliquer à chaque élément actuel »
- Contenu du fichier (expression):

Le nom Le jeton de contenu dynamique est résolu lors de l'exécution en items('Apply_to_each')?['name']Ainsi, chaque pièce jointe est convertie en utilisant son nom de fichier d'origine. PDF4me lit l'extension pour choisir le moteur de rendu approprié.

Étape 5c : Ajouter à la variable de tableau (la pièce jointe convertie)
- Ci-dessous, convertir en PDF à l'intérieur de la même boucle, Ajouter une action, prendre Ajouter à la variable de tableau.
- Configure:
- Nom:
email - Valeur (expression):
base64ToBinary(body('Convert_to_PDF')?['$content'])
- Nom:

Les deux noms de propriété sont importants. Les octets de la pièce jointe Outlook sont disponibles sur contenuBytesPDF4me Convert to PDF output est disponible sur $contentLes deux expressions sont au format base64. Veillez à bien respecter les noms lorsque vous les collez, et la boucle fonctionnera sans problème.
Étape 6 : Fusionner plusieurs fichiers PDF en une seule archive PDF
Flux jusqu'à présent : Déclencher plus Initialiser la variable plus Convertir en corps PDF plus Ajouter (corps) plus Appliquer à chaque plus Fusionner plusieurs PDF.
L'ensemble email Le tableau (le PDF du corps en premier, puis les PDF des pièces jointes dans l'ordre des pièces jointes) est traité par un seul appel Merge.
- Sous le bouton Appliquer à chaque boucle + Nouvelle étape, recherche PDF4me, prendre Fusionner plusieurs fichiers PDF en un seul fichier PDF.
- Configure:
- Corps/docContenu: choisissez le
emailjeton variable - Nom du fichier de sortie:
Email Attachment Merge Output.pdf
- Corps/docContenu: choisissez le
Configuration de l'action de fusion

Étape 7 : Pourquoi un nom de fichier horodaté pour l’archive ?
Flux jusqu'à présent : Déclencher plus Initialiser la variable plus Convertir en corps PDF plus Ajouter plus Appliquer à chaque plus Fusionner plus Créer un fichier.
Enregistrez le PDF consolidé sur Dropbox avec un nom de fichier horodaté UTC afin que chaque entrée d'archive soit un fichier distinct et triable. L'envoi de deux courriels à la même adresse au même instant étant suffisamment rare, cette méthode garantit une unicité efficace sans qu'il soit nécessaire d'y intégrer les identifiants des messages.
- Cliquez + Nouvelle étape, prendre Dropbox : Créer un fichier.
- Configure:
- Chemin du dossier:
/blog data/merge blog template/output - Nom de fichier (expression, clic)
fx):concat('merge-', formatDateTime(utcNow(), 'yyyyMMdd-HHmmss'), '.pdf') - Contenu du fichier: choisissez le Contenu du fichier jeton de l'action Fusionner plusieurs PDF
- Chemin du dossier:
Expression du nom de fichier

Action finale avec le contenu du fichier mappé

Astuce pour les boîtes de réception très volumineuses. Pour les boîtes aux lettres recevant plus de 10 courriels par minute, ajoutez un court hachage de l'identifiant de message Internet (IMD) pour garantir son unicité : concat('merge-', formatDateTime(utcNow(), 'yyyyMMdd-HHmmss'), '-', substring(triggerOutputs()?['body/internetMessageId'], 0, 8), '.pdf')Piste d'audit toujours lisible, collisions impossibles.
Exécutez le flux et vérifiez
- Sauvegarder le flux en haut à droite.
- Envoyez un message électronique avec une ou plusieurs pièces jointes à l'adresse surveillée.
- Ouvrir Historique des coursesLe déclencheur devrait s'activer en quelques secondes.
- Ouvrez Dropbox à
/blog data/merge blog template/output/Un fichier nommémerge-YYYYMMDD-HHmmss.pdfy a-t-il. - Ouvrez le PDF. La page 1 contient le texte principal. Les pages suivantes contiennent chaque pièce jointe, affichée intégralement et dans l'ordre.
Qu'avez-vous construit concrètement ? Un processus d'archivage automatique des e-mails. Chaque message avec pièces jointes est converti en un seul PDF consolidé : le corps du message en premier, puis les pièces jointes dans l'ordre, horodatés pour éviter les conflits, puis déposés dans un dossier partagé accessible à votre équipe de gestion des archives ou à vos auditeurs. Ce processus fonctionne aussi bien avec deux qu'avec vingt pièces jointes.
Variantes courantes que vous pouvez ajouter sans reconstruction
endsWith(toLower(items('Apply_to_each')?['name']), '.pdf')Ignore les signatures électroniques et les pièces jointes d'images intégrées.PDF/A-2b Après la fusion, le PDF archivé est conforme à la norme ISO 19005 et peut être soumis à une obligation de conservation légale et à une soumission aux autorités réglementaires.Archivage des courriels : PDF ou EML
| Aspect | PDF consolidé (ce flux) | Exportation EML brute |
|---|---|---|
| Universellement lisible | Oui, n'importe quel lecteur PDF | Non, Outlook ou un client compatible est nécessaire. |
| Recherche par contenu | Oui, compatible avec la reconnaissance optique de caractères (OCR). | Édition limitée, corps uniquement |
| Accessoires inclus | Oui, en ligne comme des pages | Oui, sous forme de flux binaire |
| Correspondance du format d'audit | SOX, RGPD, HIPAA, FINRA acceptent | Souvent rejeté |
| Inviolable | Oui, si l'affichage numérique était ajouté | Modifiable facilement dans n'importe quel éditeur |
| Taille du fichier | Plus grand (toutes les pages rendues) | Plus petit (pas de rendu) |
| pipeline de rétention | Un PDF par e-mail, facile à chaîner | EML nécessite un format de conteneur |
Questions fréquentes
Comment déclencher ce flux sur une boîte aux lettres partagée plutôt que sur une boîte de réception personnelle ?
Remplacez le Lorsqu'un nouvel e-mail arrive (V3) déclencher avec Lorsqu'un nouvel e-mail arrive dans une boîte aux lettres partagée (V2). Transmettez l'adresse de la boîte aux lettres comme Adresse de boîte aux lettres d'origine Le reste du flux demeure identique ; chaque référence de pièce jointe et chaque expression de corps sont résolues de la même manière.
Que se passe-t-il si un courriel ne contient aucune pièce jointe ?
Le déclencheur Uniquement avec pièces jointes Oui Le filtre empêche le flux de se déclencher pour les e-mails ne contenant que le corps du message. Si vous souhaitez également archiver les e-mails ne contenant que le corps du message, définissez ce filtre sur Non et placez la boucle Appliquer à chaque élément dans une condition : ne l'exécuter que lorsque length(triggerOutputs()?['body/attachments']) est supérieur à zéro. L'opération de fusion fonctionnera tout de même avec un seul fichier PDF du tableau, produisant une archive d'une seule page.
Comment puis-je inclure l'expéditeur, l'objet et la date de réception sur la page 1 de l'archive ?
Avant l'étape 3, ajoutez un Composer action avec un préambule HTML :
<h2>From: @{triggerOutputs()?['body/from']}</h2>
<h2>Subject: @{triggerOutputs()?['body/subject']}</h2>
<p>Received: @{triggerOutputs()?['body/receivedDateTime']}</p>
<hr>
@{triggerOutputs()?['body/body']}
Ensuite, orientez le contenu du fichier de l'étape 3 vers la sortie de composition. La page 1 contient désormais des métadonnées d'en-tête consultables.
Cela fonctionnera-t-il avec les e-mails HTML contenant des images intégrées ?
Oui. PDF4me Convert to PDF génère du HTML avec du contenu intégré. <img src="cid:..."> Références et images base64 intégrées. Outlook body/body Il inclut le code HTML complet avec le contenu intégré, de sorte que le PDF généré préserve la fidélité visuelle de ce que le destinataire a vu.
Combien de temps dure l'écoulement ?
Environ 10 à 15 secondes par pièce jointe pour un fichier DOCX d'une page, plus 5 à 10 secondes pour le déclencheur et le chargement final. Un e-mail classique avec deux pièces jointes est traité en 35 à 45 secondes. Par défaut, la fonction « Appliquer à chaque » de Power Automate exécute les tâches séquentiellement pour un résultat ordonné ; si l'ordre n'a pas d'importance et que vous privilégiez la rapidité, configurez-la. Contrôle de la concurrence à 20 dans les paramètres de la boucle.
Dépannage
L'un des éléments Ajouter au tableau Valeur les expressions ne sont pas enveloppées dans base64ToBinary(...)Chaque envoi (corps et pièces jointes) nécessite une conversion. Rouvrez les deux actions Ajouter, passez à l'éditeur d'expressions et vérifiez que les expressions sont correctes. base64ToBinary(body('Convert_to_PDF_Body')?['$content']) et base64ToBinary(body('Convert_to_PDF')?['$content']) textuellement.
L'action « Convertir en corps PDF » n'a pas reçu de code HTML valide. Vérifiez le déclencheur. Joindre les pièces jointes est resté Oui (sans cela, le corps arrive parfois vide) et cela Contenu du fichier se résout à triggerOutputs()?['body/body'], pas aperçu du corps.
La valeur par défaut Appliquer à chaque Les opérations s'exécutent en parallèle, ce qui peut perturber l'ordre d'ajout. Ouvrez la boucle. Paramètres et ensemble Contrôle de la concurrence Degré de parallélisme à 1La boucle s'exécute désormais de manière séquentielle et les pièces jointes sont déposées dans l'ordre du tableau.
La résolution de l'horodatage est d'une seconde. Pour les boîtes de réception à volume élevé, ajoutez le hachage de l'identifiant de message Internet : concat('merge-', formatDateTime(utcNow(), 'yyyyMMdd-HHmmss'), '-', substring(triggerOutputs()?['body/internetMessageId'], 0, 8), '.pdf').
Prochaines étapes
Le même schéma en sept étapes (déclenchement, initialisation du tableau, conversion du corps, boucle de conversion et d'ajout, fusion, puis enregistrement avec horodatage) fonctionne pour toute automatisation de type « e-mail et pièces jointes dans un PDF ». Envoyez-en un, et chaque message entrant sera automatiquement transformé en une entrée d'archive consultable, triable et prête pour l'audit.