Mailjet : Guide technique complet pour l'email transactionnel en 2026

Par CaptainDNS
Publié le 20 janvier 2026

Dashboard Mailjet avec configuration API transactionnelle et authentification email
TL;DR
  • Mailjet (Sinch) traite 300+ milliards d'emails/an avec une API v3.1 moderne limitée à 50 messages par appel.
  • DKIM obligatoire : sélecteur mailjet, clés 2048 bits par défaut depuis avril 2024, 4096 bits disponible.
  • L'alignement SPF échoue par défaut (Return-Path sur domaine Mailjet) : comptez sur DKIM seul pour DMARC.
  • IP dédiée incluse à partir du plan Premium 100k (95$/mois) avec warm-up de 2-6 semaines obligatoire.
  • Plan Free : 6 000 emails/mois mais limité à 200/jour, idéal pour dev/staging.

Introduction

Mailjet s'est imposé comme un acteur majeur de l'email transactionnel en Europe, fondé en 2010 à Nantes avant d'être acquis par Sinch en décembre 2021 pour 1,9 milliard de dollars. Aujourd'hui, la plateforme traite plus de 300 milliards d'emails par an et équipe plus de 100 000 clients payants dans 150+ pays.

Mais derrière l'interface marketing et l'éditeur drag-and-drop se cachent des subtilités techniques critiques : différences entre API v3 et v3.1, configuration DKIM avec choix de taille de clé, alignement DMARC échouant par défaut en SPF, limites strictes du plan Free (200 emails/jour seulement), et contraintes d'IP dédiée avec warm-up obligatoire.

Ce guide s'adresse aux développeurs, DevOps, et admins système qui intègrent Mailjet pour l'email transactionnel. Nous détaillons les points bloquants, les configurations critiques, et les choix techniques selon votre stack et vos volumes.

Mailjet dans l'écosystème Sinch

Historique et acquisitions

Mailjet a été fondé en 2010 à Nantes par Wilfried Durand et Julien Tartarin via eFounders (aujourd'hui Hexa). La trajectoire d'acquisitions :

DateÉvénement
Février 2011Lancement public
Octobre 2019Acquisition par Mailgun (Thoma Bravo)
Décembre 2021Acquisition par Sinch pour 1,9 Md$
2025300+ milliards d'emails/an

Positionnement vs Mailgun

Au sein de l'écosystème Sinch, la différenciation est claire :

PlateformeCiblePoint fort
Sinch MailjetMarketeurs, PMEInterface intuitive, éditeur collaboratif
Sinch MailgunDéveloppeursAPI-first, 20+ APIs, SDKs avancés
Sinch Email on AcidQA emailTest et prévisualisation cross-client

Chiffre clé : durant le Black Friday 2025, Mailjet et Mailgun ont délivré 20,4 milliards d'emails en novembre (+32% YoY).

API REST : v3 vs v3.1

Mailjet propose deux versions de son Send API. La v3.1 est recommandée pour les nouveaux projets.

Comparaison API v3 et v3.1 Mailjet

Différences clés

Caractéristiquev3v3.1 (recommandée)
EndpointPOST /v3/sendPOST /v3.1/send
Structure payloadRecipients arrayMessages array obligatoire
Nommage propriétésTirets (Html-part)CamelCase (HTMLPart)
Messages par appel10050
VariablesVarsVariables
TemplatesMj-TemplateIDTemplateID
RéponseStatut simpleDétaillée avec MessageUUID, MessageHref

Structure de requête v3.1

{
  "Messages": [{
    "From": {"Email": "sender@captaindns.com", "Name": "Expéditeur"},
    "To": [{"Email": "dest@captaindns.com", "Name": "Destinataire"}],
    "Subject": "Confirmation commande {{var:order_id}}",
    "HTMLPart": "<h1>Merci {{var:firstname}}</h1>",
    "Variables": {"firstname": "Jean", "order_id": "12345"},
    "TemplateID": 12345,
    "TemplateLanguage": true
  }]
}

Authentification API

L'authentification utilise Basic Auth avec :

  • Username : API Key (publique)
  • Password : Secret Key (privée)
curl -X POST https://api.mailjet.com/v3.1/send \
  -u "$API_KEY:$SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{"Messages": [...]}'

Recommandation : renouveler la Secret Key tous les 90 jours.

SDKs officiels

LangagePackageInstallation
PHPmailjet-apiv3-phpcomposer require mailjet/mailjet-apiv3-php
Node.jsnode-mailjetnpm install node-mailjet
Pythonmailjet-restpip install mailjet-rest
Gomailjet-apiv3-gogo get github.com/mailjet/mailjet-apiv3-go/v4
Javamailjet-clientMaven com.mailjet:mailjet-client:6.0.0
Rubymailjet-gemgem install mailjet
C#/.NETMailjet.ApiNuGet Mailjet.Api

Limitation importante : Mailjet ne supporte pas le paramètre send_at pour les emails transactionnels. Le scheduling n'est disponible que pour les campagnes marketing via /campaigndraft.

SMTP Relay

Le SMTP relay reste pertinent pour les infrastructures existantes et les CMS legacy.

Configuration

Serveur SMTP: in-v3.mailjet.com
Ports: 25 (STARTTLS), 465 (SSL/TLS), 587 (recommandé), 2525 (alternatif)
Username: [API Key]
Password: [Secret Key]
Chiffrement: TLS supporté sur tous les ports

Headers X-Mailjet-* pour fonctionnalités avancées

HeaderUsage
X-MJ-CustomIDIdentifiant personnalisé pour tracking
X-MJ-EventPayloadPayload retourné dans webhooks
X-MJ-CampaignGroupement de messages
X-MJ-TemplateIDID du template Mailjet
X-MJ-TemplateLanguageActive le moteur de templates (true)
X-MJ-VarsVariables JSON pour personnalisation
X-MJ-TrackOpen / X-MJ-TrackClickOverride tracking (0/1)

SMTP vs API : quand choisir quoi ?

Privilégiez SMTP si :

  • Infrastructure existante (Postfix, Sendmail)
  • CMS sans SDK (WordPress legacy, Drupal)
  • Systèmes sans capacité HTTP native

Privilégiez API si :

  • Nouveaux développements
  • Besoin de réponses immédiates (MessageUUID)
  • Personnalisation avancée (templates, variables)
  • Gestion fine des erreurs

Configuration DKIM : le point critique

Pourquoi DKIM est obligatoire

Depuis les exigences Gmail/Yahoo de février 2024, l'authentification DKIM est indispensable. Sans DKIM configuré, vos emails risquent le spam ou le rejet.

Flux de configuration DKIM avec Mailjet

Processus de configuration

  1. Account Settings → Domains & Sender addresses → SPF/DKIM Authentication
  2. Ajouter le domaine si non listé
  3. Cliquer sur Setup SPF/DKIM Authentication
  4. Copier les valeurs DKIM fournies
  5. Créer l'enregistrement TXT dans votre DNS
  6. Cliquer sur Refresh pour vérifier

Paramètres DKIM Mailjet

ParamètreValeur
Sélecteurmailjet
Hostname DNSmailjet._domainkey.captaindns.com
TypeTXT (pas CNAME)

Tailles de clés disponibles

TailleStatutRecommandation
1024 bitsLegacyCompatibilité maximale
2048 bitsPar défaut depuis avril 2024Recommandé
4096 bitsDisponible (nouveaux comptes)Sécurité maximale

Exemple d'enregistrement DKIM :

Type: TXT
Host: mailjet._domainkey
Value: k=rsa; p=MIGfMA0GCSqGSIb3DQEBA...[clé publique]...QIDAQAB
TTL: 300

Rotation des clés : disponible via Account → Domains → Regenerate Key. Nécessite mise à jour DNS après régénération.

Alignement SPF, DKIM et DMARC

Le problème de l'alignement SPF

Par défaut, Mailjet utilise son propre domaine pour le Return-Path (bnc3.mailjet.com). Conséquence : l'alignement SPF échoue systématiquement pour DMARC.

Schéma alignement SPF et DKIM avec DMARC

Comment DMARC fonctionne avec Mailjet

MéthodeDomaine authentifiéDomaine FromAlignment ?Résultat DMARC
SPFmailjet.com (Return-Path)captaindns.comNonNe contribue pas
DKIMcaptaindns.com (signature d=)captaindns.comOuiDMARC passe

Stratégie : s'appuyer sur DKIM seul pour la conformité DMARC. Un seul mécanisme aligné suffit.

Activer l'alignement SPF (optionnel, comptes payants)

Si vous souhaitez l'alignement SPF (double validation DMARC) :

  1. Créer un CNAME : bnc3.captaindns.com CNAME bnc3.mailjet.com
  2. Soumettre un ticket support Mailjet avec screenshot DNS et API key
  3. Mailjet active le Return-Path personnalisé (limité à un par API key)

Note : cette configuration est réservée aux comptes payants et nécessite une intervention du support.

Configuration DMARC recommandée

# Phase 1 - Monitoring
_dmarc TXT "v=DMARC1; p=none; rua=mailto:dmarc@captaindns.com"

# Phase 2 - Quarantine
_dmarc TXT "v=DMARC1; p=quarantine; pct=100; rua=mailto:dmarc@captaindns.com"

# Phase 3 - Reject
_dmarc TXT "v=DMARC1; p=reject; pct=100; rua=mailto:dmarc@captaindns.com"

IP dédiée vs partagée

Seuils pour IP dédiée

CritèreSeuil
Minimum absolu100 000 emails/mois
Recommandation ISP150 000 emails/mois + 5 000/jour
Incluse gratuitementPlans Premium 100k+ et Custom

Processus de warm-up

Une IP dédiée neuve nécessite un warm-up obligatoire :

ParamètreValeur
TypeManuel, guidé par l'équipe délivrabilité Mailjet
Démarrage~300 emails jour 1
Progression+20% par jour
Durée2-6 semaines selon volume et engagement
ContactSupport/sales obligatoire (pas de self-service)

Quand rester sur IP partagée ?

Restez sur IP partagée si :

  • Volume inférieur à 100 000 emails/mois
  • Envois irréguliers ou sporadiques
  • Transactionnel pur à faible volume
  • Pas de ressources pour gérer le warm-up

Passez à IP dédiée si :

  • Volume régulier supérieur à 150 000 emails/mois
  • Besoin de séparer trafic marketing et transactionnel
  • Exigences de whitelisting ou conformité
  • Ressources pour surveiller la réputation

Tarification 2025

Plans disponibles

PlanPrix/moisEmails/moisEmails/jourIP dédiée
Free0$6 000200Non
Essential 15k17$15 000IllimitéNon
Premium 15k27$15 000IllimitéNon
Premium 100k95$100 000IllimitéIncluse
Premium 500k470$500 000IllimitéIncluse
CustomDevisPersonnaliséIllimitéIncluse

Réduction annuelle : 10% sur tous les plans.

Fonctionnalités par plan

FonctionnalitéFreeEssentialPremium
APIs, SMTP, WebhooksOuiOuiOui
Logo MailjetPrésentRetiréRetiré
SegmentationNonOuiOui
AutomationNonNonOui
A/B TestingNonNonOui (10 versions)
Multi-utilisateursNonNonOui
IP dédiéeNonNonOui (100k+)
SSONonNonOui (100k+)

Coûts additionnels

  • Overage : 2,24$/1000 (tiers bas), 1,04$/1000 (tiers hauts)
  • Email validations : 500/mois (Essential), 2 000/mois (Premium 100k+)
  • Réduction nonprofit : 20% sur plans mensuels
  • Pas de report de crédits : emails non utilisés expirent en fin de cycle

Limites techniques

Rate limits

ÉlémentLimite
Comptes Test Mode10 emails/heure
Free plan200 emails/jour
API SMS6 requêtes/seconde
IP dédiée~100 000 emails/heure
Messages v3 par appel100
Messages v3.1 par appel50

Throttling : code HTTP 429 Too Many Requests avec erreur MJ-002: Exceeded API Rate Limit.

Quotas plateforme

ÉlémentLimite
Taille email maximum15 MB
Recipients par appel (v3)50
Objets message par payload (v3.1)100
Taille HTML (avant clipping Gmail)102 KB
Upload image2 MB (recommandé moins de 200 KB)
Contacts plan Free1 000

Gestion des bounces

TypeComportement Mailjet
Hard bounceBlocage automatique 90 jours
Soft bounceRetry pendant 24h puis marqué soft-bounced
Spam complaintBlocage systématique via FBL
UnsubscribeRetrait automatique des listes

Webhooks et Event API

Événements disponibles

ÉvénementDescription
sentEmail accepté par serveur SMTP destination
deliveredDélivrance confirmée
openOuverture détectée
clickClic sur lien
bounceRebond (hard ou soft)
blockedPré-bloqué par Mailjet
spamMarqué comme spam
unsubDésinscription

Configuration webhook

POST /v3/REST/eventcallbackurl
{
  "EventType": "open",
  "Url": "https://captaindns.com/webhook",
  "Version": 2
}

Retry logic : tentatives toutes les 30 secondes pendant 24h si non-200. URL suspendue après échecs répétés.

Sécurité : HTTPS avec Basic Auth recommandé (https://user:pass@captaindns.com/webhook).

Template Language

Mailjet utilise une syntaxe type Jinja2/Twig :

Variables

Mailjet propose quatre types de variables :

  • Variable API : syntaxe var:name pour les données passées via l'API
  • Valeur par défaut : syntaxe var:name:"default" si la variable est absente
  • Donnée contact : syntaxe data:property pour les propriétés persistantes du contact
  • Variable prédéfinie : syntaxe mj:contact.email pour les données système

Conditionnels et boucles

Conditionnel :
{% if var:totalorders > "5" %}
Code promo VIP : -10%
{% else %}
Bienvenue nouveau client !
{% endif %}

Boucle :
{% for item in var:products %}
Produit: item.name - item.price EUR
{% endfor %}

Conformité et certifications

CertificationStatut
ISO 27001Oui (premier ESP pur certifié, 2017)
ISO 27701Oui (extension privacy)
SOC 2 Type IIOui (~400 contrôles)
PCI DSSOui
HIPAASur demande
RGPDPremière entreprise certifiée AFAQ RGPD (2018)

Données : stockage exclusif dans l'UE (Google Cloud Platform).

Sécurité compte :

  • Authentification à deux facteurs (2FA) via apps TOTP (Google Authenticator, Authy)
  • SSO et SAML sur plans Premium 100k+ (Okta, Azure AD, Auth0)
  • Login Challenge pour IPs inconnues (depuis mars 2024)

Plan d'action : mise en route en 7 étapes

1. Créer le compte et générer les credentials

  • Créer un compte Mailjet (Free possible)
  • Générer API Key + Secret Key dans Account Settings → API Key Management
  • Noter les deux : API Key (publique) et Secret Key (privée, à protéger)

2. Ajouter et valider le sender

  • Créer un sender dans Account Settings → Senders & Domains
  • Valider l'adresse via le lien reçu par email

3. Configurer DKIM (obligatoire)

  • Aller dans Domains & Sender addresses → SPF/DKIM Authentication
  • Copier les valeurs DKIM générées par Mailjet
  • Créer l'enregistrement TXT chez votre registrar :
    • Nom : mailjet._domainkey
    • Valeur : la clé publique fournie
  • Attendre la propagation (24-48h max)
  • Cliquer sur Refresh pour vérifier

4. Configurer SPF (optionnel)

Si vous souhaitez l'include SPF :

v=spf1 include:spf.mailjet.com ~all

Note : l'include SPF seul ne suffit pas pour l'alignement DMARC (voir section alignement).

5. Choisir la méthode d'envoi

Option A : API REST v3.1

  • Implémenter l'endpoint POST /v3.1/send
  • Utiliser les SDKs si disponibles dans votre stack
  • Créer des templates dans Templates si besoin

Option B : SMTP relay

  • Configurer votre app avec :
    • Host : in-v3.mailjet.com
    • Port : 587 (STARTTLS)
    • User : API Key
    • Password : Secret Key

6. Configurer les webhooks

  • Account Settings → Event tracking (Webhooks)
  • Créer des endpoints pour : delivered, bounced, opened, clicked, spam
  • Sécuriser avec HTTPS + Basic Auth

7. Tester et monitorer

  • Envoyer un email test
  • Vérifier dans Stats que l'envoi est OK
  • Vérifier les headers de l'email reçu (DKIM pass, domaine From correct)
  • Surveiller le dashboard pour les métriques

FAQ

Quelle est la différence entre API v3 et v3.1 ?

La v3.1 utilise des noms de propriétés en CamelCase (HTMLPart) vs tirets (Html-part), limite les messages à 50 par appel (vs 100), et retourne des réponses plus détaillées avec MessageUUID et MessageHref. La v3.1 est recommandée pour les nouveaux projets.

Pourquoi l'alignement SPF échoue avec Mailjet ?

Mailjet utilise son propre domaine pour le Return-Path (bnc3.mailjet.com). DMARC vérifie l'alignement entre le domaine authentifié par SPF et le domaine From. Comme ces domaines diffèrent, SPF ne contribue pas à DMARC. Solution : s'appuyer sur DKIM seul, qui passe en alignement.

Dois-je ajouter include:spf.mailjet.com dans mon SPF ?

Ce n'est pas obligatoire et ça ne change rien à l'alignement DMARC. L'include SPF peut être utile pour la validation SPF basique, mais DKIM seul suffit pour passer DMARC avec Mailjet. L'alignement SPF n'est possible qu'avec un Return-Path personnalisé (comptes payants, support requis).

Le plan Free suffit-il pour une app en production ?

Oui, si votre volume est inférieur ou égal à 200 emails/jour (attention : le plan Free offre 6 000/mois mais limité à 200/jour). Toutes les fonctionnalités transactionnelles (API, SMTP, webhooks) sont disponibles. Idéal pour MVP, staging, ou apps à très faible volume.

Quelle taille de clé DKIM choisir ?

2048 bits est le défaut depuis avril 2024 et convient à la majorité des cas. 4096 bits est disponible pour les nouveaux comptes si vous souhaitez une sécurité maximale. 1024 bits est legacy et déconseillé sauf contrainte de compatibilité spécifique.

Quand ai-je besoin d'une IP dédiée ?

Si vous envoyez plus de 100 000 emails/mois de façon régulière, si vous avez besoin d'isoler la réputation de votre trafic transactionnel, ou si vous avez des exigences de whitelisting. L'IP dédiée est incluse dans les plans Premium 100k+ et nécessite un warm-up de 2-6 semaines.

Comment fonctionne le warm-up d'une IP dédiée ?

Le warm-up est un processus manuel guidé par l'équipe Mailjet. Il démarre à environ 300 emails/jour et augmente de 20% par jour pendant 2 à 6 semaines. Il faut envoyer quotidiennement pour établir la réputation. Contact support/sales obligatoire pour l'activation.

Puis-je programmer l'envoi d'emails transactionnels à une heure précise ?

Non, Mailjet ne supporte pas le paramètre send_at pour les emails transactionnels via Send API. Le scheduling n'est disponible que pour les campagnes marketing via l'endpoint /campaigndraft. Pour le transactionnel, vous devez gérer le scheduling côté application.

Glossaire

  • SPF (Sender Policy Framework) : Protocole d'authentification qui liste les serveurs autorisés à envoyer des emails pour un domaine. SPF authentifie le domaine du Return-Path. Avec Mailjet, l'include est spf.mailjet.com.

  • DKIM (DomainKeys Identified Mail) : Protocole d'authentification qui signe cryptographiquement les emails. Mailjet utilise le sélecteur mailjet et propose des clés de 1024 à 4096 bits.

  • DMARC (Domain-based Message Authentication, Reporting & Conformance) : Protocole qui vérifie l'alignement entre SPF/DKIM et le From header. Avec Mailjet, seul DKIM passe en alignement par défaut.

  • Return-Path (Envelope From) : Adresse technique utilisée pour router l'email et gérer les bounces. Chez Mailjet, c'est bnc3.mailjet.com par défaut, ce qui empêche l'alignement SPF.

  • Alignement DMARC : Vérification que le domaine authentifié (SPF ou DKIM) correspond au domaine From. Mode relaxed (défaut) accepte les sous-domaines.

  • API Key : Identifiant public Mailjet utilisé comme username pour l'authentification API et SMTP.

  • Secret Key : Clé privée Mailjet utilisée comme password. À renouveler tous les 90 jours.

  • Send API : Endpoint d'envoi d'emails Mailjet. Version v3.1 recommandée (POST /v3.1/send).

  • Rate limit : Limite de débit. Code HTTP 429 en cas de dépassement. Message v3.1 limité à 50 par appel.

  • Warm-up : Processus de montée en charge progressive d'une IP dédiée. 2-6 semaines chez Mailjet.

  • Webhook : URL HTTP appelée par Mailjet lors d'événements (delivered, bounced, etc.). Retry pendant 24h si échec.

Sources officielles

Articles similaires