L’e-mail pour les développeurs frontend
Envoyez des e-mails directement depuis votre frontend.Payez vos pics, pas toute l’année.
Connectez le fournisseur d’e-mail que vous utilisez déjà, créez des modèles HTML avec des paramètres typés et appelez send() depuis le navigateur. Quand la haute saison dépasse votre quota, rien n’est perdu : les messages patientent dans une file d’attente et partent dès que vous rechargez vos crédits.
Forfait Free avec 300 e-mails par mois. Sans carte bancaire.
contact.js
import { init, sendForm } from '@frontmail/browser';
init({ publicKey: 'pk_live_2Jx8…' });
const form = document.querySelector('#contact');
form.addEventListener('submit', async (event) => {
event.preventDefault();
const { status } = await sendForm('svc_default', 'tpl_contact', form);
// 'queued' – or 'held' when you're out of credits. Never dropped.
});ContactForm.tsx
import { FrontmailProvider, useSendEmail } from '@frontmail/react';
function ContactForm() {
const { send, status } = useSendEmail('svc_default', 'tpl_contact');
return (
<form
onSubmit={(event) => {
event.preventDefault();
const { email, message } = Object.fromEntries(new FormData(event.currentTarget));
send({ email, message });
}}
>
<input name="email" type="email" required />
<textarea name="message" required />
<button disabled={status === 'sending'}>Send</button>
</form>
);
}
const options = { publicKey: 'pk_live_2Jx8…' };
// <FrontmailProvider options={options}><ContactForm /></FrontmailProvider>ContactForm.vue
<script setup lang="ts">
import { reactive } from 'vue';
import { useSendEmail } from '@frontmail/vue';
const { send, status } = useSendEmail('svc_default', 'tpl_contact');
const form = reactive({ email: '', message: '' });
</script>
<template>
<form @submit.prevent="send(form)">
<input v-model="form.email" type="email" required />
<textarea v-model="form.message" required />
<button :disabled="status === 'sending'">Send</button>
</form>
</template>ContactForm.svelte
<script lang="ts">
import { createFrontmail, frontmailForm } from '@frontmail/svelte';
const frontmail = createFrontmail({ publicKey: 'pk_live_2Jx8…' });
const { status } = frontmail;
</script>
<form use:frontmailForm={{ serviceId: 'svc_default', templateId: 'tpl_contact', frontmail }}>
<input name="email" type="email" required />
<textarea name="message" required></textarea>
<button disabled={$status === 'sending'}>Send</button>
</form>order-confirmation.ts
import { Frontmail } from '@frontmail/node';
const frontmail = new Frontmail({ privateKey: process.env.FRONTMAIL_PRIVATE_KEY });
await frontmail.send({
serviceId: 'svc_transactional',
templateId: 'tpl_order_confirmation',
params: {
customer_name: 'Jana',
order_id: 'A-1042',
items: [{ title: 'Ceramic mug', qty: 2 }],
},
});Comment ça marche
Du formulaire à la boîte de réception en trois étapes
Connectez un service d’envoi
SMTP, Gmail, Outlook ou un fournisseur transactionnel comme Mailgun, Postmark ou SES. Les identifiants sont chiffrés et vérifiés chaque jour.
Concevez un modèle HTML
Du HTML complet avec Handlebars, des paramètres typés et un aperçu en direct sur ordinateur et mobile, en thème clair comme sombre.
Envoyez depuis votre code
Appelez send() avec votre clé publique depuis n’importe quel framework – ou depuis votre serveur avec une clé privée. Nouvelles tentatives et idempotence incluses.
Zéro e-mail perdu
Plus de crédits ne veut jamais dire message perdu
Un quota finit par s’épuiser, un jeton OAuth finit par expirer. Pour Frontmail, c’est une raison d’attendre – jamais une raison de jeter un e-mail.
frontmail.send()- Des crédits disponibles ?
- OuiMis en file et envoyéD’abord le quota, puis le pack qui expire le plus tôt.
- NonDécouvert autorisé+10 % de votre quota mensuel sur les forfaits payants, facturé sur la facture suivante.
- Retenu, pas perduL’API répond 202 avec le statut « held ». Les messages attendent jusqu’à 3 jours sur Free et 14 jours sur les forfaits payants.
- Envoyé automatiquementUn achat de pack, une recharge automatique, un changement de forfait ou une nouvelle période envoie les e-mails retenus, du plus ancien au plus récent.
- Le fournisseur refuse vos identifiants ?
- Le service de secours prend le relaisChaque modèle peut désigner un service de secours en cas d’erreur d’authentification ou d’erreur permanente.
- Retenu jusqu’à la réparationSans secours, les messages sont retenus et renvoyés dès que le service fonctionne à nouveau.
File d’attente des e-mails retenus
Plus de crédit ? La requête est acceptée et conservée. Vous recevez un e-mail avant toute expiration et pouvez libérer ou supprimer les messages retenus en masse.
Découvert autorisé
Les forfaits payants disposent d’un découvert de 10 % de leur quota mensuel : un mois un peu plus chargé continue simplement d’envoyer.
Recharge automatique
Choisissez un pack et un seuil – ou rechargez dès le premier message retenu. Des plafonds de dépenses vous évitent les mauvaises surprises.
Vérifications et secours
Chaque service est vérifié quotidiennement et à chaque erreur d’authentification. Des identifiants invalides déclenchent une alerte, une bannière dans le tableau de bord et le service de secours.
Alertes de consommation à 50, 80 et 100 % et dès votre premier message retenu.
Packs de crédits
Gardez un petit forfait. Ajoutez des packs pour les mois chargés.
Les packs sont des achats ponctuels valables 3 à 12 mois, disponibles sur tous les forfaits, Free compris. Indiquez le volume attendu pour chaque mois et nous trouverons la combinaison la moins chère.
5 000 e-mails
valable 3 mois
10 €
2 € les 1 000
Acheter ce pack25 000 e-mails
valable 6 mois
39 €
1,56 € les 1 000
Acheter ce pack100 000 e-mails
valable 12 mois
129 €
1,29 € les 1 000
Acheter ce pack
Notre recommandation
Forfait Free
Packs à acheter
- janvier : 1 × pack de 5 000 e-mails10 €
- mars : 1 × pack de 25 000 e-mails39 €
- juillet : 1 × pack de 25 000 e-mails39 €
- décembre : 1 × pack de 25 000 e-mails39 €
- Forfait
- 0 €
- Packs
- 127 €
- Total sur l’année
- 127 €
Un forfait couvrant toute l’année votre pic de 25 000 e-mails (Business 50k) coûterait 468 €. Vous économisez 341 € (73 %).
Commencer gratuitementFonctionnalités
Tout ce qu’il faut à un formulaire de contact – et bien plus
Modèles HTML avec aperçu en direct
HTML complet, conditions et boucles Handlebars, paramètres typés avec validation, versions avec comparaison et retour arrière.
Votre fournisseur, votre réputation
SMTP, Gmail, Outlook, Mailgun, SES, Postmark, Mailjet, Brevo et Resend, avec un service de secours par modèle.
Protection anti-spam intégrée
Cloudflare Turnstile sur tous vos formulaires en un clic, liste de domaines autorisés, limites par IP et par clé, blocage des navigateurs headless et alertes d’anomalies.
Historique consultable
Contenu rendu, paramètres et chronologie des événements pour chaque message. Renvoi en un clic, export CSV.
Suivi de la délivrabilité
Délivré, rejeté, signalé comme spam, ouvert, cliqué – directement depuis les webhooks de votre fournisseur, avec suppression automatique des rejets définitifs.
Équipes, rôles et MFA
Invitez vos collègues comme propriétaire, admin, développeur, lecteur ou comptable. TOTP, codes de secours et journal d’audit des actions sensibles.
SDK avec paramètres typés
Vanilla JS, React, React Native, Vue, Svelte et Node. Lancez npx frontmail types et votre éditeur connaît chaque paramètre de vos modèles.
Des erreurs qui s’expliquent d’elles-mêmes
Un format d’erreur unique avec un code, un message et un lien vers la documentation. Les SDK relancent les erreurs réseau et 5xx sans jamais envoyer deux fois.
Fournisseurs
Compatible avec le service d’e-mail que vous avez déjà
Des boîtes personnelles pour les petits sites, des fournisseurs transactionnels pour monter en charge – avec un guide pas à pas pour chacun dans la documentation.
- SMTPOVHcloud, Orange, Zoho, votre propre serveur…SMTP
- GmailOAuth
- Outlook / Microsoft 365OAuth
- Amazon SESAPI
- MailgunEU / USAPI
- PostmarkAPI
- MailjetAPI
- BrevoAPI
- ResendAPI
Pourquoi ne pas appeler directement l’API de votre fournisseur ?
Amazon SES, Mailgun, Postmark ou l’API Gmail livrent l’e-mail. Tout ce qui entoure un formulaire public – clés, bots, pannes, modèles, historique – reste à la charge de votre propre backend. Frontmail est ce backend, et continue d’envoyer via votre fournisseur.
| Ce dont vous avez besoin | L’API du fournisseur seule | Avec Frontmail |
|---|---|---|
| Envoyer depuis un site ou une app mobile | Il faut une clé API secrète ou un jeton OAuth qui ne doit jamais atteindre le navigateur – vous construisez et hébergez donc votre propre backend. | Une clé publique et des SDK pour le web, React Native, Kotlin et Swift. Aucun serveur à développer ni à maintenir. |
| Bloquer les bots sur un formulaire public | Votre backend doit ajouter CAPTCHA, limites de débit et contrôle d’origine. | Turnstile, domaines autorisés, limites par IP et par clé, et contenu verrouillé dès que le destinataire vient du formulaire. |
| Identifiants expirés ou panne du fournisseur | L’envoi échoue et votre code décide du sort de l’e-mail. | Vérification quotidienne des services, service de secours par modèle, et les e-mails en échec sont retenus puis envoyés après la reconnexion. |
| Modèles | Chaque fournisseur a son propre format et sa propre API de modèles – ou le HTML vit dans votre code. | Éditeur HTML avec aperçu en direct, paramètres typés, versions et variantes linguistiques. Le même modèle fonctionne avec tous les fournisseurs. |
| Historique et événements de livraison | Chaque fournisseur remonte les événements à sa façon (webhooks, notifications SNS) et vous les stockez vous-même. | Un historique des messages consultable, avec livré, rejeté, signalé, ouvert et cliqué pour chaque fournisseur. |
| Changer de fournisseur | Réécrire l’intégration. | Changez de service dans le tableau de bord – votre code reste identique. |
Frontmail ne remplace pas votre fournisseur – les e-mails partent toujours de votre domaine via votre compte. Si vous avez déjà un backend qui envoie de gros volumes, appeler directement votre fournisseur peut revenir moins cher. Les noms de produits sont des marques de leurs propriétaires.
Migrer depuis EmailJS
Changez un seul import
Le package @frontmail/emailjs-compat expose les mêmes fonctions que @emailjs/browser. Recréez votre service et votre modèle dans Frontmail, remplacez l’import et gardez votre code.
- 1Connectez votre service d’envoi et importez le HTML de votre modèle.
- 2Remplacez l’import du package et vos clés.
- 3Mettez en ligne. Passez plus tard à @frontmail/browser si vous voulez des paramètres typés.
- import emailjs from '@emailjs/browser';
+ import emailjs from '@frontmail/emailjs-compat';
emailjs.init({ publicKey: 'YOUR_PUBLIC_KEY' });
emailjs
.sendForm('YOUR_SERVICE_ID', 'YOUR_TEMPLATE_ID', '#contact-form')
.then((response) => console.log('SUCCESS', response.status));Comparaison des deux services
| Situation | EmailJS* | Frontmail |
|---|---|---|
| Quota mensuel épuisé | Les requêtes suivantes ne sont pas envoyées jusqu’à la réinitialisation du quota ou un changement de forfait. | Les requêtes sont acceptées et retenues jusqu’à 14 jours (3 jours sur Free), puis envoyées automatiquement après une recharge. |
| Limite de débit de l’API REST | 1 requête par seconde. | 2 à 50 requêtes par seconde selon le forfait, plus un endpoint d’envoi groupé. |
| Pic saisonnier | Passer à un forfait supérieur. | Gardez votre forfait et achetez un pack de crédits valable 3 à 12 mois. |
* Informations sur EmailJS en date de septembre 2026, selon emailjs.com/pricing. EmailJS est une marque de son propriétaire ; Frontmail n’est pas affilié à EmailJS.
Comparer Frontmail à d’autres servicesTarifs
Des forfaits simples. Des packs pour les pics.
Commencez gratuitement, passez au niveau supérieur quand vous en avez besoin. La facturation annuelle vous fait économiser 20 %.
Free
300 e-mails / mois
0 €/ mois
Gratuit pour toujours
Commencer gratuitement- 3 modèles
- Pas de pièces jointes
- Historique : 7 jours
- 1 utilisateur
- 2 requêtes / seconde
- File d’attente : 3 jours
- Domaines autorisés et Turnstile
- Pied de page « Envoyé via Frontmail »
Starter
3 000 e-mails / mois
7 €/ mois
84 € facturés annuellement
Choisir Starter- 10 modèles
- Pièces jointes jusqu’à 1 MB par requête
- Historique : 30 jours
- 1 utilisateur
- 5 requêtes / seconde
- File d’attente : 14 jours
- Découvert de 10 %
- Domaines autorisés et Turnstile
- Le plus choisi
Pro
10 000 e-mails / mois
15 €/ mois
180 € facturés annuellement
Choisir Pro- Modèles illimités
- Pièces jointes jusqu’à 5 MB par requête
- Historique : 90 jours
- 5 utilisateurs
- 20 requêtes / seconde
- File d’attente : 14 jours
- Découvert de 10 %
- Domaines autorisés et Turnstile
Business
50 000 e-mails / mois
39 €/ mois
468 € facturés annuellement
Choisir Business 50k- Modèles illimités
- Pièces jointes jusqu’à 25 MB par requête
- Historique : 180 jours
- Utilisateurs illimités
- 50 requêtes / seconde
- File d’attente : 14 jours
- Découvert de 10 %
- Domaines autorisés et Turnstile
Paliers Business
Packs de crédits
Achat ponctuel, disponible sur tous les forfaits. Utilisés après votre quota mensuel, en commençant par celui qui expire le plus tôt.
Comparer tous les forfaits
| Forfait | Free | Starter | Pro | Business 50k | Business 100k | Business 200k |
|---|---|---|---|---|---|---|
| Prix / mois | 0 € | 7 € | 15 € | 39 € | 71 € | 127 € |
| E-mails / mois | 300 | 3 000 | 10 000 | 50 000 | 100 000 | 200 000 |
| Modèles | 3 | 10 | Illimité | Illimité | Illimité | Illimité |
| Pièces jointes | – | 1 MB | 5 MB | 25 MB | 25 MB | 25 MB |
| Historique | 7 jours | 30 jours | 90 jours | 180 jours | 180 jours | 180 jours |
| Utilisateurs | 1 | 1 | 5 | Illimité | Illimité | Illimité |
| Limite de débit | 2 req/s | 5 req/s | 20 req/s | 50 req/s | 50 req/s | 50 req/s |
| Découvert | – | 10 % | 10 % | 10 % | 10 % | 10 % |
| File d’attente | 3 jours | 14 jours | 14 jours | 14 jours | 14 jours | 14 jours |
Prix hors TVA. Les entreprises de l’UE disposant d’un numéro de TVA valide sont facturées en autoliquidation.
Questions sur la facturation
Le quota non utilisé est-il reporté ?
Non – le quota mensuel est remis à zéro à chaque période de facturation. Les packs de crédits, eux, restent valables 3, 6 ou 12 mois : achetez-les au moment où vous en avez besoin.
Que se passe-t-il quand je n’ai plus de crédits ?
Les forfaits payants utilisent d’abord le découvert. Ensuite, les nouveaux messages sont retenus (et non rejetés) et partent automatiquement dès que vous achetez un pack, que la recharge automatique se déclenche, que vous changez de forfait ou qu’une nouvelle période commence. Si vous préférez un refus net, passez votre organisation en mode rejet : l’API renverra alors 402.
Comment le découvert est-il facturé ?
Les crédits de découvert réellement utilisés sont ajoutés à votre prochaine facture. Le découvert non utilisé ne coûte rien.
Puis-je changer de forfait ou résilier ?
Un passage à un forfait supérieur s’applique immédiatement, avec un montant calculé au prorata. Un passage à un forfait inférieur ou une résiliation prend effet à la fin de la période payée. Les packs déjà achetés restent valables jusqu’à leur expiration.
Dans quelle devise vais-je payer ?
Les clients facturés dans l’UE paient en euros, tous les autres en dollars américains. La TVA est calculée au paiement en fonction de votre pays de facturation et de votre numéro de TVA.
Comment puis-je payer ?
Par carte bancaire, Apple Pay ou Google Pay, et par prélèvement SEPA là où il est disponible. Chaque paiement donne lieu à une facture téléchargeable depuis le tableau de bord.
FAQ
Questions fréquentes
Est-ce sûr de mettre une clé publique dans mon frontend ?
Oui. Une clé publique ne peut envoyer qu’avec vos modèles, uniquement depuis les domaines de votre liste autorisée, et derrière Turnstile et des limites de débit. Les clés privées sont réservées aux serveurs et n’ont rien à faire dans du code exécuté par le navigateur.
Ai-je besoin de mon propre fournisseur d’e-mail ?
Oui – Frontmail envoie via un service que vous connectez, les messages partent donc de votre domaine et avec votre réputation. Un compte Gmail ou Outlook personnel suffit pour un petit site.
Que comprend le forfait Free ?
300 e-mails par mois, 3 modèles, la protection anti-spam et 7 jours d’historique. Les e-mails comportent un petit pied de page « Envoyé via Frontmail ». Vous pouvez aussi acheter des packs de crédits avec Free.
Où sont stockées mes données ?
Dans la région AWS eu-central-1 (Francfort, Allemagne). Les identifiants des fournisseurs sont chiffrés avec AWS KMS. L’historique des messages n’est conservé que le temps prévu par votre forfait.
Et si ma connexion Gmail ou Outlook expire ?
Nous vérifions chaque service tous les jours et immédiatement après une erreur d’authentification. Vous recevez un e-mail et une bannière dans le tableau de bord ; les messages passent par votre service de secours ou restent retenus jusqu’à ce que vous reconnectiez le compte.
Puis-je aussi envoyer depuis un serveur ?
Oui. Le SDK Node et l’API REST acceptent une clé privée, qui se passe du contrôle d’origine et du CAPTCHA et permet l’envoi groupé de 100 messages maximum par requête.
Pourquoi Frontmail plutôt qu’Amazon SES, Mailgun ou l’API Gmail ?
Vous les utilisez ensemble. Ces API exigent une clé secrète et ne peuvent donc pas être appelées depuis un navigateur ou une app. Frontmail se place entre les deux : il conserve les identifiants, protège votre formulaire des bots, génère vos modèles et envoie via le fournisseur que vous connectez.
Puis-je envoyer des e-mails avec Amazon SNS ?
SNS est un service de notifications : ses abonnements e-mail envoient des notifications en texte brut aux adresses qui ont confirmé l’abonnement. C’est adapté aux alertes, pas aux e-mails destinés à vos clients. Pour envoyer depuis votre domaine, connectez Amazon SES – Frontmail transforme ses notifications de livraison SNS en statuts de message.
Mettez votre formulaire en ligne aujourd’hui. Et abordez la haute saison sereinement.
Forfait gratuit, sans carte bancaire, API complète. Changez de forfait ou ajoutez un pack dès que votre trafic le demande.