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.
Pas à pas
Section intitulée « Pas à pas »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.
2. Recréer vos modèles
Section intitulée « 2. Recréer vos modèles »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) |
4. Changer l’import
Section intitulée « 4. Changer l’import »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.
5. Turnstile au lieu de reCAPTCHA
Section intitulée « 5. Turnstile au lieu de reCAPTCHA »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é.
6. Tester et basculer
Section intitulée « 6. Tester et basculer »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.
7. Facultatif : passer au SDK natif
Section intitulée « 7. Facultatif : passer au SDK natif »@frontmail/browser ou un SDK pour framework vous apporte des paramètres typés, le statut held,
getStatus() et des erreurs typées.
Syntaxe des modèles
Section intitulée « Syntaxe des modèles »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.
Comparaison
Section intitulée « Comparaison »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.