Aller au contenu principal

Convertissez le corps de l'e-mail et toutes ses pièces jointes en un seul PDF consolidé avec Power Automate : un flux de travail Outlook + PDF4me en 7 étapes

· 27 minutes de lecture
SEO and Content Writer

Le plus pénible dans les flux de travail pilotés par e-mail, ce n'est pas l'e-mail lui-même, c'est… tout ce qui va avecLe corps du message contient le contexte (qui l'a envoyé, pourquoi, que faire), les pièces jointes contiennent les documents (la facture, le formulaire, le contrat signé), et les stocker séparément signifie que vous n'aurez besoin que de trois clics pour reconstituer le message ultérieurement. Ce guide vous explique précisément comment procéder. Power Automate avec PDF4me Convertir en PDF, PDF4me Fusionner plusieurs fichiers PDF, Perspectives, Dropboxet une seule action « Appliquer à chaque boucle ». Sept actions de flux. Un e-mail entrant est réceptionné. Un PDF consolidé est envoyé, le corps du message puis les pièces jointes une par une, horodatés et automatiquement archivés.

Aperçu du flux
1. When a new email arrives (V3)
Outlook trigger on To [email protected]. Include Attachments Yes, Only with Attachments Yes.
2. Initialize variable
Name email, Type Array. Buffer for every PDF binary the flow produces.
3. Convert to PDF Body
PDF4me action. Content triggerOutputs body/body (the HTML body), File Name email-body.html. Returns the body as PDF.
4. Append to array (email body)
Push base64ToBinary on the converted body PDF onto the email array. This is page 1 of the final document.
5. Apply to each attachment
Loop triggerOutputs body/attachments. Convert each to PDF, then Append to array with base64ToBinary.
6. Merge multiple PDFs
PDF4me action. Body/docContent the email array, Output File Name Email Attachment Merge Output.pdf.
7. Create file
Dropbox /blog data/merge blog template/output. File Name concat(merge-, formatDateTime(utcNow(), yyyyMMdd-HHmmss), .pdf).
La version courte

Perspectives Lorsqu'un nouvel e-mail arrive (V3) Le déclencheur s'active dès qu'un message arrive à destination. [email protected]. Une variable de type tableau nommée e-mail s'ouvre. PDF4me Convertir en PDF transforme d'abord le corps HTML en PDF, puis le corps converti est ajouté au tableau en tant que page 1. Appliquer à chaque parcourt chaque pièce jointe (deux fichiers DOCX dans cette exécution : 3Page.docx, Docx_2Pages.docxPDF4me convertit chaque fichier en PDF et les ajoute tour à tour. Fusionner plusieurs fichiers PDF Consomme l'ensemble du tableau et génère un seul PDF consolidé. Dropbox Créer un fichier réécrit-il comme fusion-20260611-103323.pdfUn nom horodaté qui ne se chevauche jamais. Le corps du document en premier, les pièces jointes dans l'ordre, un seul PDF, un seul dossier, prêt pour l'audit.

Questions et réponses basées sur le pourquoi

Pourquoi convertir d'abord le corps du texte en PDF ? Le corps du message en constitue le contexte : qui l’a envoyé, pourquoi, que faire. Votre futur vous, en lisant le PDF consolidé, voudra que la première page plante le décor avant l’arrivée des pièces jointes. Conversion triggerOutputs()?['body/body'] (le corps HTML) dans un PDF en premier signifie que l'action de fusion considère le message lui-même comme le document principal, et non comme un fichier texte séparé.

Pourquoi une seule variable de type tableau pour le corps du message et les pièces jointes ? L'action de fusion requiert une collection unique et ordonnée. Initialisez-la une seule fois, ajoutez le corps du message à l'étape 4, puis chaque pièce jointe convertie à l'étape 5 ; le tableau obtenu correspondra ainsi à l'ordre des documents souhaité. Deux tableaux distincts obligeraient à une action de composition ultérieure pour les concaténer, ce qui représente un travail supplémentaire inutile pour un résultat identique.

Pourquoi base64ToBinary à chaque poussée ? PDF4me Convert to PDF renvoie sa sortie sous forme de chaîne base64 enveloppée dans $contentLes pièces jointes Outlook arrivent au format base64 sur contenuBytesPDF4me, pour fusionner plusieurs fichiers PDF, nécessite des tampons binaires. 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 provenant du même expéditeur et envoyés à une heure d'intervalle entreraient en conflit si le nom du fichier était identique. concat('merge-', formatDateTime(utcNow(), 'yyyyMMdd-HHmmss'), '.pdf') produit des noms comme fusion-20260611-103323.pdf, triable lexicographiquement, unique à la seconde près et instantanément lisible comme un horodatage UTC.


Ce que vous obtiendrez

Saisir: Tout courriel entrant à l'adresse 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 consolidé déposé 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

Affichage du courriel Gmail : message adressé à test, corps : Bonjour, j’espère que vous allez bien. Je vous écris pour vous informer de l’avancement du projet en cours. Vous trouverez également en pièces jointes des fichiers utiles. Cordialement, Test Dev. Deux pièces jointes apparaissent sous forme de vignettes Word : 3Page.docx et Docx_2Pages.docx. Notification « Scanné par Gmail » visible.

Le flux surveille la boîte de réception Outlook à [email protected]. Dès que Gmail transfère le message ou que cette adresse le reçoit directement, le déclencheur s'active.

Le dossier Dropbox de sortie après deux exécutions

Le dossier de sortie Dropbox contient les fichiers merge-20260611-103323.pdf (165,43 Ko) et merge-20260611-102949.pdf (171,37 Ko), chacun nommé d'après l'horodatage UTC de l'exécution du flux.

Page 1 du PDF fusionné

Aperçu du fichier merge-20260611-103323.pdf montrant deux pages côte à côte : la page de gauche est le corps de l’e-mail converti. Bonjour, j’espère que vous allez bien. Je vous écris pour vous informer de l’avancement du projet en cours. Vous trouverez également en pièce jointe quelques fichiers utiles. Cordialement, Test Dev. La page de droite est la première page du fichier 3Page.docx, intitulée « Page 1 ».

La page 1 correspond au corps de l'e-mail converti. À partir de la page 2, vous trouverez la première pièce jointe (3Page.docx). La deuxième pièce jointe (Docx_2Pages.docx) suit ensuite. Un PDF, message complet reconstitué.


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 Outlook.Pour le Lorsqu'un nouvel e-mail arrive (V3) déclencher et lire la pièce jointe contenuBytesToute boîte de réception pour laquelle le connecteur peut s'authentifier fonctionne.
  • Dropbox (ou SharePoint, OneDrive, Google Drive). Pour le PDF final consolidé.
  • Un courriel avec des pièces jointes. La démonstration utilise deux exemples DOCX. 3Page.docx et Docx_2Pages.docxEnvoyez-les par e-mail à l'adresse surveillée afin de reproduire chaque capture d'écran.

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

  1. Outlook : Lorsqu’un nouveau courriel arrive (V3) (déclenchement).
  2. Variable d'initialisation nommé email (Tableau).
  3. PDF4me : Convertir en PDF (Corps)Lit le corps HTML et renvoie un PDF.
  4. Ajouter à la variable de tableau avec base64ToBinary sur la carrosserie transformée.
  5. Appliquer à chaque sur triggerOutputs()?['body/attachments']:
    • PDF4me : Convertir en PDF la pièce jointe.
    • Ajouter à la variable de tableau avec base64ToBinary sur le PDF converti.
  6. PDF4me : Fusionner plusieurs fichiers PDF en un seul fichier PDFTableau en entrée, un PDF en sortie.
  7. Dropbox : Créer un fichierL'expression Nom de fichier horodatée en UTC.

Aperçu complet du flux

Canevas de flux Power Automate affichant sept actions empilées de haut en bas : À la réception d’un nouvel e-mail (V3), Initialiser la variable, Convertir en PDF, Ajouter au tableau (corps de l’e-mail), Appliquer à chaque élément contenant « Convertir en PDF » et « Ajouter au tableau », Fusionner plusieurs fichiers PDF en un seul, Créer le fichier

Sept actions. L'option « Appliquer à chaque carte » affiche « 1 sur 2 » car l'e-mail de test contenait deux pièces jointes. PDF4me intervient trois fois dans le flux : conversion du corps du texte, conversion des pièces jointes, fusion de tous les éléments.


Étape 1 : Outlook : Lorsqu’un nouveau courriel arrive (V3)

Flux jusqu'à présent : Déclencheur uniquement.

  1. Dans Power Automate cliquez Créer, choisir Flux cloud automatisé.
  2. Nommez le flux (par exemple, Email to Consolidated PDF), prendre Office 365 Outlook : Lorsqu’un nouveau courriel arrive (V3) comme déclencheur, cliquez Créer.
  3. Connecter Votre boîte aux lettres Office 365.
  4. Développer Paramètres avancés et Afficher tout pour afficher les options de filtrage.
  5. 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

Power Automate Office 365 Outlook : Déclencheur V3 « Lorsqu’un nouvel e-mail arrive » : Paramètres avancés développés (définis sur test@ynoox.ch), Inclure les pièces jointes : Oui, Uniquement avec pièces jointes : Oui, Connecté à Office 365 Outlook

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. À combiner avec un À filtre sur un alias 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 regrouper.


É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 au format PDF.

  1. Cliquez + Nouvelle étape, prendre Variable d'initialisation.
  2. Configure:
    • Nom: email
    • Taper: Array
    • Valeur: laisser vide

Initialiser la configuration des variables

Action d'initialisation de variable Power Automate configurée avec le nom email et le type Tableau et un champ Valeur vide

Étape 3 : PDF4me : Convertir en PDF (Corps)

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 entière se fait donc en une seule action.

  1. Cliquez + Nouvelle étape, recherche PDF4me, prendre Convertir en PDF.
  2. Rebaptiser l'action à Convertir en corps de PDF L'action « Convertir en PDF » de l'étape 5 pourra donc avoir un nom plus clair ultérieurement.
  3. Connecter PDF4me Connectez-vous avec votre clé API (première fois uniquement).
  4. Configure:
    • Contenu du fichier (expression, clic) fx): triggerOutputs()?['body/body']
    • Nom de fichier: email-body.html

Convertir en configuration du corps PDF

Action Power Automate PDF4me Convertir en corps de fichier PDF avec le contenu du fichier défini sur le jeton de déclenchement Corps (expression triggerOutputs body/body) et le nom de fichier email-body.html, connecté à PDF4me Connect

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 gérer tous, 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.

  1. Cliquez + Nouvelle étape, prendre Ajouter à la variable de tableau.
  2. Rebaptiser l'action à Ajouter à la variable de tableau (corps de l'e-mail) pour plus de clarté.
  3. Configure:
    • Nom: email
    • Valeur (expression): base64ToBinary(body('Convert_to_PDF_Body')?['$content'])

Ajouter la configuration du corps de l'e-mail

Action Power Automate « Ajouter à une variable de tableau (corps de l'e-mail) » avec le nom « e-mail » et la valeur définie sur l'expression « base64ToBinary body » (guillemet ouvrant Convert_to_PDF_Body) (guillemet fermant, parenthèse fermante, question, dollar, contenu fermant, crochet affiché dans l'éditeur d'expressions)

Étape 5 : Appliquer à chaque pièce jointe, convertir et ajouter

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)

  1. Cliquez + Nouvelle étape, prendre Appliquer à chaque.
  2. Configure:
    • Sélectionnez une sortie parmi les étapes précédentes (expression): triggerOutputs()?['body/attachments']
Power Automate : Appliquer à chaque action avec Sélectionner une sortie des étapes précédentes définie sur le jeton Pièces jointes, expression résolue triggerOutputs body/attachments affiché dans l'infobulle

Étape 5b : Convertir au format PDF (pièce jointe)

  1. À l'intérieur de la boucle, cliquez Ajouter une action, prendre PDF4me : Convertir en PDF.
  2. 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 »
Dans l'action « Convertir en PDF » de Power Automate, l'option « Appliquer à chaque élément » définit le contenu du fichier sur « base64ToBinary items Apply_to_each contentBytes », et le nom du fichier sur le jeton de nom de la pièce jointe actuelle. L'éditeur d'expressions est ouvert et affiche les éléments « base64ToBinary items Apply_to_each contentBytes ».

Le nom Le jeton de contenu dynamique est résolu lors de l'exécution en items('Apply_to_each')?['name'], donc chaque pièce jointe est convertie en utilisant son nom de fichier d'origine (qui contient l'extension source et indique à PDF4me quel moteur de rendu utiliser).

L'infobulle du champ Nom du fichier PDF de Power Automate affiche les éléments d'expression résolus : Apply_to_each name, name token de Apply to each current attachment

Étape 5c : Ajouter à la variable de tableau (la pièce jointe convertie)

  1. Ci-dessous, convertir en PDF à l'intérieur de la même boucle, Ajouter une action, prendre Ajouter à la variable de tableau.
  2. Configure:
    • Nom: email
    • Valeur (expression): base64ToBinary(body('Convert_to_PDF')?['$content'])
Power Automate : Ajouter à une variable de tableau dans Appliquer à chaque, Nom email, Valeur définie sur base64ToBinary body Convert_to_PDF dollar contenu affiché dans l'éditeur d'expressions

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 : PDF4me : Fusionner plusieurs fichiers 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.

  1. Sous le bouton Appliquer à chaque boucle + Nouvelle étape, recherche PDF4me, prendre Fusionner plusieurs fichiers PDF en un seul fichier PDF.
  2. Configure:
    • Corps/docContenu: choisissez le email jeton variable
    • Nom du fichier de sortie: Email Attachment Merge Output.pdf

Configuration de l'action de fusion

L'action Power Automate PDF4me Fusionner plusieurs fichiers PDF en un seul fichier PDF, avec Body/docContent défini sur la variable email et le nom de fichier de sortie Email Attachment Merge Output.pdf, ouvre un panneau de contenu dynamique affichant les variables email, Appliquer à chaque, Élément actuel, Lorsqu'un nouvel email arrive V3, body/sensitivityLabelInfo, Pièces jointes

Étape 7 : Dropbox : Créer un fichier avec un nom horodaté

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 exécution soit enregistrée comme un fichier neuf et triable.

  1. Cliquez + Nouvelle étape, prendre Dropbox : Créer un fichier.
  2. 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

Expression du nom de fichier

Power Automate Dropbox Créer un fichier action Chemin du dossier /blog data/merge blog template/output, Nom du fichier expression concat merge dash comma formatDateTime utcNow comma yyyyMMdd dash HHmmss comma dot pdf affiché dans l'éditeur d'expressions, Contenu du fichier défini sur Fusionner plusieurs jetons

Action finale avec le contenu du fichier mappé

Action Power Automate Dropbox Créer un fichier avec le chemin du dossier /blog data/merge blog template/output, l'expression de concaténation du nom de fichier, le jeton de contenu du fichier provenant de l'action Fusionner plusieurs fichiers PDF en un seul fichier PDF, l'infobulle se résolvant en corps Merge_multiple_PDF_files_into_a_single_PDF_file

Conseil. Vous souhaitez un dossier par domaine d'expéditeur ? Remplacez le chemin d'accès statique au dossier par concat('/inbox-pdfs/', split(triggerOutputs()?['body/from'], '@')[1], '/')Les fichiers PDF sont automatiquement acheminés vers des sous-dossiers comme /inbox-pdfs/votreentreprise.com/ en fonction du domaine de l'expéditeur.


Exécutez le flux et vérifiez

  1. Sauvegarder le flux en haut à droite.
  2. Envoyez un courriel avec une ou plusieurs pièces jointes à l'adresse surveillée (la procédure pas à pas utilisée). [email protected]).
  3. Ouvrir Historique des coursesLe déclencheur devrait s'activer en quelques secondes. Observez chaque action devenir verte : la conversion du corps en PDF prend environ 10 secondes pour un court corps HTML ; l'application à chaque élément s'exécute en parallèle par défaut et traite les deux pièces jointes en environ 22 secondes ; la fusion de plusieurs PDF prend environ 11 secondes.
  4. Ouvrez Dropbox à /blog data/merge blog template/output/Un fichier nommé merge-YYYYMMDD-HHmmss.pdf y a-t-il.
  5. 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 ou à vos auditeurs. Ce processus fonctionne aussi bien avec deux qu'avec vingt pièces jointes. Il est compatible avec Make (déclencheur Outlook, itération sur les pièces jointes et fusion PDF4me) et Zapier (envoi d'e-mails via Zapier ou déclencheur Outlook, boucle et fusion PDF4me).


Variantes courantes que vous pouvez ajouter sans reconstruction

Filtrer les pièces jointes par type
Si vous souhaitez uniquement inclure les PDF et les documents Office dans la fusion, placez la fonction Convertir en PDF dans un bloc Condition tests endsWith(toLower(items('Apply_to_each')?['name']), '.pdf') ou similaire. Ignore proprement les signatures et les pièces jointes d'images intégrées.
Inscrire les métadonnées sur la page 1
Avant l'étape 3, créez un préambule HTML avec Composer: expéditeur, objet, date de réception, puis concaténer ces éléments à corps/corpsLa première page du PDF consolidé contient désormais un en-tête sur lequel vous pourrez effectuer une recherche ultérieurement.
Signature numérique avant archivage
Insérer PDF4me Signature numérique PDF Entre l'étape 6 et l'étape 7, le PDF archivé est contresigné avec votre certificat X.509, ce qui constitue une piste d'audit instantanée. Qui a archivé quoi et quand ?.
PDF/A pour la conservation à long terme
Ajouter PDF4me Créer un PDF/A en conformité PDF/A-2b Après la fusion, le PDF consolidé archivé est désormais conforme à la norme ISO 19005 et peut être soumis à une obligation de conservation légale ou à une autorité de réglementation.

Dépannage

Fusionner les erreurs d'action avec « contenu invalide »

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.

La page 1 est blanche ou manquante.

L'action « Convertir en corps PDF » n'a pas reçu de corps 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.

Appliquer à chaque exécution zéro fois

Le déclencheur s'est activé sur un courriel sans pièces jointes parce que Uniquement avec pièces jointes est défini sur Non. Soit vous le modifiez en Oui, soit vous intégrez l'application à chaque dans une condition qui ne s'exécute que lorsque longueur(triggerOutputs()?['corps/pièces jointes']) est supérieur à zéro.

Les pièces jointes apparaissent dans le désordre.

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 placées dans le tableau dans l'ordre exact où Outlook les a renvoyées.


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 + pièces jointes dans un PDF ». Envoyez-le une seule fois et chaque message entrant sera automatiquement archivé et classé comme entrée consultable et triable.