Aller au contenu

Migrer depuis EmailJS

Frontmail a été conçu pour que la migration depuis EmailJS prenne quelques minutes : le SDK navigateur a les mêmes signatures de fonctions, l’API REST accepte les mêmes champs et la syntaxe des modèles est compatible pour les modèles simples.

1. Créer votre organisation et connecter le service

Section intitulée « 1. Créer votre organisation et connecter le service »

Créez un compte sur app.frontmail.dev et connectez le même fournisseur d’e-mail que dans EmailJS (voir Services). Si vous utilisiez un service Gmail ou Outlook, reconnectez-le via OAuth ; pour les fournisseurs SMTP ou API, saisissez les mêmes identifiants.

Créez un modèle pour chaque modèle EmailJS. Copiez l’objet, To, From, Reply-To et le contenu. Cliquez ensuite sur Détecter depuis le modèle et définissez les types et les champs obligatoires – voir la syntaxe des modèles ci-dessous pour les différences.

3. Faire correspondre les clés et les identifiants

Section intitulée « 3. Faire correspondre les clés et les identifiants »
EmailJS Frontmail Où le trouver
Public Key (user_id) Clé publique pk_… Sécurité → Clé publique
Private Key (accessToken) Clé privée sk_… – serveur uniquement Sécurité → Clés privées (affichée une seule fois)
Service ID ID du service svc_… Services d’envoi
Template ID ID du modèle tpl_… Modèles
Liste des domaines autorisés Sites autorisés Sécurité → Sites autorisés
reCAPTCHA Cloudflare Turnstile avec votre propre widget gratuit Clés dans Sécurité → Protection contre les bots (Turnstile), par modèle Paramètres → Protection → Exiger un CAPTCHA (Turnstile)
import emailjs from '@emailjs/browser';
import emailjs from '@frontmail/emailjs-compat';

Vos appels emailjs.init(), emailjs.send() et emailjs.sendForm() continuent de fonctionner – seuls les identifiants et la clé changent. Voir Compatibilité EmailJS.

Vous utilisez le script CDN ? Remplacez le <script> EmailJS par la version compat, qui expose la même variable globale emailjs : vos appels restent inchangés.

<script
src="https://cdn.jsdelivr.net/npm/@frontmail/emailjs-compat@0.1.0/dist/emailjs-compat.umd.js"
integrity="sha384-RH+fuNzBqTKgxDJBHRmWfOn37fs33L+Or1ujDV7wThynx9FxD9uPptLu80LpCrEc"
crossorigin="anonymous"></script>

Épinglez la version exacte et conservez l’attribut integrity – voir Épingler la version pour savoir où trouver l’empreinte des versions plus récentes.

Vous pouvez aussi charger le SDK natif (@frontmail/browser, même épinglage) et renommer les appels emailjs. en frontmail. – les arguments sont identiques, mais la promesse est résolue avec status: 'queued' ou 'held' au lieu de 200.

Vous appelez l’API REST directement ? Remplacez l’hôte par https://api.frontmail.dev. Les chemins /api/v1.0/email/send et /api/v1.0/email/send-form ainsi que les champs du corps restent les mêmes.

Si vos modèles utilisaient reCAPTCHA, retirez le widget reCAPTCHA et ajoutez Turnstile. Comme avec reCAPTCHA, vous utilisez les clés de votre propre compte : créez un widget Turnstile gratuit dans Cloudflare, collez ses clés dans Sécurité → Protection contre les bots (Turnstile) et cliquez sur Activer le CAPTCHA pour tous les modèles ; les nouveaux modèles l’exigent alors par défaut. Placez le widget avec votre clé de site dans le formulaire – voir Turnstile. Le champ g-recaptcha-response n’est pas utilisé.

Envoyez un test depuis l’éditeur de modèle, déployez et surveillez l’Historique. Conservez votre compte EmailJS jusqu’à ce que vous ayez vu passer du trafic réel.

@frontmail/browser ou un SDK pour framework vous apporte des paramètres typés, le statut held, getStatus() et des erreurs typées.

Frontmail utilise Handlebars ; EmailJS une syntaxe proche de Mustache. Cas courants :

EmailJS Frontmail Remarques
{{name}} {{name}} Identique. Toujours échappé en HTML dans Frontmail.
{{{html_content}}} {{html_content}} avec un paramètre de type html Les triples accolades ne désactivent pas l’échappement dans Frontmail ; utilisez le type html nettoyé.
Sections de type {{#if}} issues de Mustache {{#name}}…{{/name}} {{#if name}}…{{/if}} Utilisez des blocs Handlebars explicites.
Section inversée Mustache {{^name}}…{{/name}} {{#unless name}}…{{/unless}}
Listes via des sections {{#each items}}…{{/each}} avec un paramètre list Définissez itemFields pour la validation.
– {{formatDate}}, {{formatMoney}}, {{eq}}… Helpers supplémentaires.

Les valeurs par défaut définies dans les champs de modèle EmailJS correspondent au default du paramètre dans Frontmail.

Une comparaison factuelle des fonctionnalités utiles pour la migration, en septembre 2026. Les tarifs et les limites des deux services évoluent – consultez les pages des fournisseurs avant de décider.

EmailJS Frontmail
Quand le quota mensuel est épuisé Les requêtes sont refusées jusqu’à la période suivante ou un passage à un forfait supérieur Les messages sont retenus et envoyés automatiquement à l’ajout de crédits ; découvert et recharge automatique en option
Packs de crédits prépayés avec validité Non proposés Packs de 5k / 25k / 100k valables 3 à 12 mois, sur tous les forfaits
Rate limit de l’API REST 1 requête par seconde 2 à 50 requêtes par seconde selon le forfait, plus /v1/send-batch
Langage des modèles Variables avec sections simples Handlebars avec conditions, boucles, helpers et paramètres typés et validés
CAPTCHA reCAPTCHA v2 Cloudflare Turnstile, activé pour tous les modèles en un clic
Bascule entre fournisseurs Non proposée Service de secours par modèle, vérifications d’état quotidiennes
Suivi de la distribution Non proposé Délivré / rejeté / plainte / ouvert / cliqué via les webhooks des fournisseurs
Nouvelles tentatives et idempotence dans les SDK Non documentées Nouvelles tentatives automatiques avec clés d’idempotence
SDK pour frameworks SDK navigateur, SDK React Native Navigateur, React, React Native, Vue, Svelte, Node, compatible EmailJS

Si vous repérez ici une information obsolète, signalez-la-nous à support@frontmail.dev et nous la corrigerons.