Aller au contenu

Pièces jointes et images intégrées

Frontmail propose quatre façons d’ajouter des fichiers à un e-mail. Les pièces jointes sont disponibles sur les forfaits payants ; la taille totale maximale par requête dépend du forfait (voir Forfaits).

Méthode Configuration Usage
Pièces jointes statiques Paramètres du modèle Le même fichier dans chaque e-mail (liste de prix, CGV en PDF)
Base64 dynamique attachments dans la requête d’envoi Petits fichiers générés (≤ quelques centaines de ko)
Téléversements POST /v1/uploads, puis attachments: [{ upload_id }] Fichiers plus volumineux, fichiers choisis par les utilisateurs
Fichiers de formulaire Champs de fichier de sendForm() / /v1/send-form Fichiers joints à un formulaire HTML

Les pièces jointes statiques sont des fichiers joints à chaque e-mail envoyé avec le modèle (jusqu’à 10 par modèle). Elles sont stockées dans S3 et comptent dans la limite de taille par requête. L’éditeur de modèles les liste sous Paramètres → Protection → Pièces jointes statiques ; il n’est pas encore possible de les téléverser depuis le tableau de bord – écrivez à support@frontmail.dev si vous avez besoin d’en configurer une.

Activez d’abord Autoriser les pièces jointes du formulaire dans Paramètres → Protection du modèle ; sinon les requêtes contenant des pièces jointes échouent avec attachments_not_allowed.

await send('svc_01J9…', 'tpl_invoice', { name: 'Jana' }, {
attachments: [
{ filename: 'invoice.pdf', contentType: 'application/pdf', contentBase64: pdfBase64 },
],
});
"attachments": [
{ "filename": "invoice.pdf", "content_type": "application/pdf", "content_base64": "JVBERi0xLjcK…" }
]

Le base64 augmente la taille de la requête d’un tiers – au-delà de quelques centaines de kilo-octets, utilisez les téléversements.

  1. Demandez une URL de téléversement (clé publique ou privée) :

    Fenêtre de terminal
    curl https://api.frontmail.dev/v1/uploads \
    -H 'Content-Type: application/json' \
    -H 'X-Frontmail-Public-Key: pk_4f2a…' \
    -d '{ "filename": "cv.pdf", "content_type": "application/pdf", "size": 482113 }'
    {
    "upload_id": "upl_01J9Z3",
    "url": "https://uploads.frontmail.dev/…",
    "method": "PUT",
    "headers": { "Content-Type": "application/pdf" },
    "expires_at": "2026-09-24T11:00:00Z"
    }
  2. Envoyez le fichier par PUT vers url avec les headers renvoyés, avant expires_at.

  3. Référencez-le dans l’envoi : "attachments": [{ "upload_id": "upl_01J9Z3" }].

La taille déclarée (size) est comparée dès le départ à la limite de votre forfait (attachment_too_large), et l’objet stocké est vérifié de nouveau au moment de l’envoi du message.

Avec sendForm(), chaque <input type="file"> du formulaire devient une pièce jointe :

<input type="file" name="cv" accept="application/pdf">

Les pièces jointes dynamiques proviennent de toute personne pouvant utiliser votre formulaire : Frontmail refuse donc, avec attachments_not_allowed, les types de fichiers qui exécutent du code ou servent typiquement au phishing : exécutables et programmes d’installation (.exe, .msi, .msix, .appx, .scr, .com, .bat, .cmd, .cpl, .dll, .jar, .app, .pkg, …), scripts (.js, .jse, .vbs, .wsf, .ps1, .hta, …), raccourcis (.lnk, .url, .library-ms, …), images disque (.iso, .img, .vhd, .vhdx, .dmg), pages web et images vectorielles (.html, .htm, .xhtml, .mht, .svg), OneNote (.one) et fichiers Office avec macros (.docm, .xlsm, .pptm, …). Les noms de fichiers sont d’abord nettoyés : les caractères invisibles et de droite à gauche (utilisés pour déguiser invoice<U+202E>fdp.exe en invoiceexe.pdf) ainsi que les points ou espaces finaux sont supprimés, si bien que report.exe. est traité comme .exe.

Avec la clé publique, POST /v1/uploads nécessite aussi au moins un modèle qui autorise les pièces jointes du formulaire, et les téléversements partagent un budget quotidien de 200 × la limite de pièces jointes de votre forfait par organisation.

Vous avez deux options :

  • Images hébergées – utilisez une URL absolue https:// dans <img src>. Idéal pour les logos et les éléments décoratifs : les e-mails restent légers et les clients chargent les images à la demande.
  • Images CID – une pièce jointe statique avec un content ID, p. ex. logo, référencée par <img src="cid:logo" alt="Example Ltd.">. L’image est intégrée à l’e-mail : elle s’affiche même quand les images distantes sont bloquées, mais elle alourdit chaque e-mail.

Renseignez toujours alt sur les images – les vérifications du modèle signalent son absence.