Chez vous, votre email s’affiche parfaitement.
Votre client, lui, l’ouvre cassé.
Gmail, Outlook et le mode sombre changent l’apparence de votre email après l’envoi. Un bouton s’affiche vide, un logo disparaît, la mise en page s’effondre, et c’est sur cette version que votre client, ou le client final, vous juge. Repérez le problème et corrigez-le avant l’envoi.
L’aperçu s’ouvre sur un ordinateur
Un email cassé peut vous coûter un client.
Et vous n’en saurez peut-être jamais rien. Votre client le transfère à sa direction, sans le logo. Un client final cherche le bouton, trouve un espace vide et passe son chemin.
“We have a client who, when receives our test emails for approval, is having some serious issues with the design layout.”
Emailens vérifie ces trois problèmes, dès l’offre gratuite. Tester votre email gratuitement
Même email, autre messagerie
Ce que vous avez envoyé, et ce que votre client a ouvert
À gauche, l’email tel que vous l’avez conçu. À droite, le même email tel que sa messagerie l’affiche, en simulation. Changez de messagerie pour comparer.
spoiler : c’est Outlook
7 des 21 messageries simulées par Emailens.
14 de plus. Voir le rapport complet
Sachez exactement ce qui casse, et comment le corriger
Chaque problème indique la messagerie où il casse et est accompagné de sa correction, écrite pour votre framework. Voici ce qu’Emailens dit de l’email ci-dessus.
- <div style="display: flex; gap: 16px;">- <div>Item 1</div>- <div>Item 2</div>- <div>Item 3</div>- </div>+ <table role="presentation" cellpadding="0"+ cellspacing="0" border="0">+ <tr>+ <td style="padding-right: 16px;">Item 1</td>+ <td style="padding-right: 16px;">Item 2</td>+ <td>Item 3</td>+ </tr>+ </table> Use padding or margin on child elements instead of gap.
- <Row style={{ gap: "16px" }}>- <Column>Item 1</Column>- <Column>Item 2</Column>- <Column>Item 3</Column>- </Row>+ import { Row, Column } from "@react-email/components";+ + {/* Use padding on Column; gap is not supported in email clients */}+ <Row>+ <Column style={{ paddingRight: "16px" }}>Item 1</Column>+ <Column style={{ paddingRight: "16px" }}>Item 2</Column>+ <Column>Item 3</Column>+ </Row> Use padding style prop on Column instead of gap (email-safe spacing).
- <mj-raw>- <div style="display: flex; gap: 16px;">- <div style="flex: 1;">Column 1</div>- <div style="flex: 1;">Column 2</div>- </div>- </mj-raw>+ <!-- Flexbox in MJML is not Outlook-compatible.+ Use mj-section and mj-column: MJML compiles these to table-based layouts. -->+ <mj-section>+ <mj-column width="50%">+ <mj-text>Column 1</mj-text>+ </mj-column>+ <mj-column width="50%">+ <mj-text>Column 2</mj-text>+ </mj-column>+ </mj-section> Replace flexbox (from mj-raw or inline styles) with mj-section and mj-column.
- <div class="flex gap-4">- <div>Item 1</div>- <div>Item 2</div>- <div>Item 3</div>- </div>+ <!-- gap is not supported in Outlook or many email clients.+ Use padding classes on child elements instead. -->+ <table role="presentation" cellpadding="0" cellspacing="0" border="0">+ <tr>+ <td class="pr-4">Item 1</td>+ <td class="pr-4">Item 2</td>+ <td>Item 3</td>+ </tr>+ </table> Use padding classes on the children instead of gap. Same markup in a v5 HTML file and inside a v6 <template>..
Chaque vérification contrôle aussi
-
Les boutons vides dans Outlook
Une forme VML imbriquée dans une autre, et chaque bouton Outlook qui suit perd son texte. Les ghost tables et les coins mal dimensionnés aussi.
-
Logos et textes perdus en mode sombre
Chaque paire de couleurs revérifiée une fois l’email inversé par la messagerie.
-
Les balises de personnalisation visibles par vos clients
Les balises Handlebars, Mailchimp et AMPscript non remplies, repérées avant l’envoi.
-
Ce qui ressemble à du spam
Majuscules à outrance, mises en page chargées d’images, lien de désinscription absent.
-
Les emails que certains lecteurs ne peuvent pas lire
Contraste, texte alternatif, ordre des titres, attribut lang et sémantique des tableaux.
-
Les emails qui défilent à l’horizontale sur mobile
Largeurs fixes et chaînes insécables qui poussent la mise en page hors de l’écran.
-
Les liens qui ne mènent nulle part
href cassés, liens non sécurisés, mailto vides et textes de lien trop vagues.
-
Les objets tronqués
Troncature de l’objet et du preheader selon la messagerie. Le clipping de Gmail, qui masque le bas de l’email, avec Dev.
-
Fonds et polices sans bon repli
Dégradés sans couleur de repli, polices sans pile de polices web-safe.
Puis vérifiez-le sur de vrais appareils
En un clic, l’email est capturé dans les vrais Outlook, Apple Mail et Gmail, à côté de la simulation. Votre premier test est gratuit.
Ou laissez-le se corriger, design conservé
AI Fix est un agent : il regarde votre email dans la boîte de réception, corrige ce qui casse, du CSS supprimé par Gmail aux cartes arrondies dans Outlook, et revérifie chaque modification dans les 21 messageries. Il ne vous proposera jamais une correction qui aplatit votre design. Votre assistant de code peut lancer les mêmes vérifications.
preview_email audit_email fix_email
-
Vous n’utilisez pas d’assistant ? Demandez à AI Fix en langage courant, ou laissez-le corriger ce que la vérification a trouvé. Chaque compte gratuit inclut trois AI Fix. Voir comment ça marche (en anglais)
-
Encore dans Figma ? Évaluez la frame avant que quiconque n’écrive de code. Installer le plugin (en anglais)
{
"mcpServers": {
"emailens": {
"command": "npx",
"args": ["-y", "@emailens/mcp"]
}
}
} emailens/action@v1, threshold 70
✗ emails/welcome.html 66 worst: Outlook Classic
✓ emails/order-shipped.html 97 worst: Gmail iOS
✓ emails/summit-invite.html 97 worst: Gmail iOS
1 of 3 emails below 70. Check failed, the pull request is blocked.
# .github/workflows/emails.yml
on: pull_request
jobs:
email-qa:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: emailens/action@v1
with:
pattern: "emails/**/*.html"
threshold: "70" # sort avec un code non nul quand un email casse un client
$ npx @emailens/cli lint 'emails/*.html'
# sortie lisible par machine, pour vos propres scripts
$ npx @emailens/cli lint email.html --json
# strict : les avertissements font aussi échouer le build
$ npx @emailens/cli lint email.html --fail-on-warning Bloquez-le avant la production
Vérifiez chaque email à chaque pull request. Une modification qui casse une messagerie fait échouer le build, comme n’importe quel test, avant qu’un client ne la voie.
Le moteur, la CLI et le serveur MCP sont open source. Voir les dépôts (en anglais)
Ajouter la GitHub ActionTestez ce que votre application envoie vraiment
Un template validé peut encore casser une fois rempli par votre application. Envoyez le vrai email dans une boîte de réception sandbox.
Boîte de test
Envoi vers smtp.emailens.dev:2525Toutes les boîtes
-
Votre code de connexion
auth@example.com · maintenant
-
Votre commande a été expédiée
orders@example.com · 11:58
-
Réinitialisez votre mot de passe
auth@example.com · 11:40
Quand votre application envoie
220 smtp.emailens.dev ESMTP
EHLO app.example.com
STARTTLS
AUTH PLAIN ••••••••
MAIL FROM:<auth@example.com>
RCPT TO:<inbox+signup@try.emailens.dev>
250 Captured in your sandbox, not delivered
Vérifié à l’arrivée
- SPF pass
- DKIM pass
- DMARC pass
- Fonctionne dans 19 clients sur 21
Code de connexion
482913
GET /api/sandbox/v1/messages/wait
200 · votre test soumet le code
Relais SMTP smtp.emailens.dev:2525
ou écrivez à inbox+…@try.emailens.dev
Restez en boîte de réception
Un email parfait qui finit en spam a quand même échoué. Emailens vérifie chaque jour le domaine depuis lequel vous envoyez.
-
Vos rapports DMARC, lus pour vous. Faites pointer votre adresse rua vers Emailens et voyez qui envoie en votre nom, et qui échoue.
-
Un email dès que quelque chose change. Un enregistrement change ou une nouvelle source commence à échouer : vous êtes le premier informé.
Toutes les messageries, dans chaque offre.
Gratuit pour toujours. Dev à partir de 9 $ par mois.
Les 21 messageries dans chaque offre. Pas de facturation par utilisateur, pas d’appel commercial, résiliable à tout moment.
Deux mois offerts sur Dev et Pro en facturation annuelle
Free
Tout le moteur, 30 vérifications par jour
- 30 vérifications par jour
- Les 21 clients de messagerie
- 1 boîte générée · 100 emails de test/mois
- Réception sur une adresse @try privée
- Inspection des messages capturés, extraction d’OTP et de liens
- Rapport de compatibilité CSS
- Aperçu en mode sombre
- 1 domaine surveillé · vérification DNS
- Historique d’audit et de sandbox sur 7 jours
- 3 AI Fix offerts
- 1 test sur appareil réel offert
- Serveur MCP · 7 outils locaux
Dev
Pour un développeur : 100 vérifications par jour, une clé API et une boîte de réception de test
- 100 vérifications par jour
- 5 boîtes générées · 5 000 emails de test/mois
- Envoi via le SMTP sandbox ou vers des boîtes @try
- API REST · 1 clé · inspection des emails capturés en CI
- 3 domaines surveillés · SPF, DKIM, DMARC
- Historique d’audit avant envoi et de sandbox sur 30 jours
- Liens de partage et Visual Diff
- Contrôle de la taille HTML et du clipping à 102 Ko
- Captures d’écran et partage via MCP
- AI Fix · 10/mois + Builder · 3 générations/mois
Pro
RecommandéLa validation avant envoi en CI, et l’historique de chaque vérification
- 50 tests sur appareils réels par mois · vrais Outlook, Apple Mail et webmails
- Nouveau test gratuit du même email pendant 7 jours
- Validation avant envoi · heuristiques anti-spam et régressions
- 25 boîtes générées · 50 000 emails de test/mois
- Envoi via le SMTP sandbox ou vers des boîtes @try
- QA email en CI · GitHub Action
- 10 domaines surveillés · alertes de dérive
- Sandbox sur 90 jours et conservation des audits sur 1 an
- Vérifications illimitées · les 21 clients
- Accès complet à l’API · 10 clés
- AI Fix · 50/mois + AI Builder · 30 générations/jour
- Captures d’écran MCP illimitées
- Tout ce qu’inclut Dev
Les prix s’entendent hors taxes applicables (taxe sur les ventes, TVA ou GST, calculées au paiement selon votre pays). Résiliable à tout moment. Changement d’offre en un clic.
Voyez ce que voit votre client. Vérifiez avant d’envoyer.
Collez le HTML et voyez 5 messageries, dont Outlook Classic. Sans créer de compte.
Tester votre email gratuitementPourquoi j’ai créé Emailens
Bonjour, je suis Philippe, et je développe Emailens seul.
Il m’est arrivé de passer trois jours à comprendre pourquoi un email de bienvenue s’affichait parfaitement dans Apple Mail et complètement cassé dans Outlook. La correction tenait en une seule propriété CSS. Les outils qui montrent ce genre de problème coûtaient plus que ce que je pouvais justifier pour quelques emails, et je voulais un outil qu’un freelance puisse payer sans demander l’accord de personne.
L’IA n’a rien réglé. Un assistant écrit un email en quelques secondes, mais il ne voit jamais comment cet email s’affiche dans Outlook, et rien ne lui renvoie le résultat pour qu’il le corrige. Emailens, c’est cette boucle.
Le moteur open source a été téléchargé plus de 35 000 fois, dont plus de la moitié au cours du dernier mois.
Je développe donc Emailens avec trois principes en tête :
- Abordable. Chaque offre simule les 21 clients, dès la version gratuite. Les captures sur appareils réels commencent à 19 $ par mois, pas des centaines.
- Open source. Le moteur, la CLI et le serveur MCP sont sur GitHub. Lisez le code, ou faites-le tourner vous-même.
- Conçu pour les assistants IA. Claude ou Cursor vérifie l’email qu’il vient d’écrire et corrige ce qui casse, avant même que vous ne le voyiez.