Quelle API e-mail choisir quand on est développeur ?

Par Mara Levin · Mis à jour le 7 octobre 2026 · Prix et documentation vérifiés ce jour-là

Resend et Postmark sont les entrées les plus rapides pour des e-mails système, Mailgun et SendGrid couvrent plus de cas limites, Amazon SES est le moins cher mais demande du montage. Quatre questions tranchent : le prix à votre volume, la liste des SDK officiels, la vérification des webhooks et la possibilité de réessayer sans doublon.

La réponse courte

  • Stack TypeScript ou React, volume petit à moyen : Resend, avec clé d'idempotence, webhooks signés et adresses de test.
  • Peu de messages mais critiques : Postmark, avec flux séparés et API Bounce et Suppressions, sans signature de webhook.
  • Courrier entrant et journaux consultables : Mailgun, avec routes et variables par destinataire.
  • Contrat Twilio ou campagnes dans le même compte : SendGrid, avec sept bibliothèques officielles.
  • Équipe AWS, gros volumes, petit budget : Amazon SES, avec demande de sortie du bac à sable et files d'événements.

SDK officiels, selon les pages de chaque éditeur

Service Node.js Python Ruby PHP Go Java .NET
ResendOuiOuiOuiOuiOuiOuiOui
PostmarkOuiOuiOuiOuiNon listéOuiOui
SendGridOuiOuiOuiOuiOuiOuiOui (C#)
MailgunOuiOuiOuiOuiOuiOuiNon listé
MailjetOuiOuiOuiOuiOuiOuiOui (C#)
Mandrill (exemples du guide)OuiOuiOuiOuiNon montréNon montréNon montré

Amazon SES passe par les SDK AWS, et je n'ai pas relu les listes de SDK de Loops, Customer.io et SparkPost ; « Non listé » signifie que la page consultée ne cite pas ce langage, pas qu'aucun client communautaire n'existe. Sources : Resend, Postmark, SendGrid, Mailgun et Mailjet.

Vérification des webhooks et réessais, service par service

Un webhook non vérifié est une porte ouverte sur votre base : n'importe qui peut poster un faux rebond. Les services diffèrent nettement. Resend signe via Svix et réessaie huit fois. Postmark ne signe pas et recommande l'authentification Basic plus une liste d'adresses IP, avec six tentatives. SendGrid propose l'ECDSA ou OAuth 2.0 et réessaie pendant 24 heures glissantes. Mailgun signe en HMAC-SHA256 avec une clé valable pour tout le compte et réessaie environ huit heures. SparkPost envoie des lots identifiés par X-MessageSystems-Batch-ID et réessaie huit heures. Mailjet réessaie toutes les 30 secondes pendant 24 heures et recommande HTTPS avec authentification Basic. Mandrill regroupe jusqu'à 1 000 événements par POST et réessaie jusqu'à 20 fois.

Deux appels pour comparer

Pour un envoi en lot, la référence de Resend montre ce code Node.js, jusqu'à 100 e-mails par appel :

const { data, error } = await resend.batch.send([
  {
    from: 'Acme <onboarding@resend.dev>',
    to: ['foo@gmail.com'],
    subject: 'hello world',
    html: '<h1>it works!</h1>',
  },
  {
    from: 'Acme <onboarding@resend.dev>',
    to: ['bar@outlook.com'],
    subject: 'world hello',
    html: '<p>it works!</p>',
  },
]);

Le guide du premier envoi de Mandrill reste très différent : un appel cURL, la clé d'API dans le corps JSON et un objet message.

curl -sS -X POST "https://mandrillapp.com/api/1.0/messages/send" \
  --header 'Content-Type: application/json' \
  --data-raw "$MESSAGE"

# MESSAGE='{"key": "$YOUR_API_KEY", "message": {"from_email": "hello@example.com", "subject": "Hello World", "text": "Welcome to Mailchimp Transactional!", "to": [{ "email": "freddie@example.com", "type": "to" }]}}'

Le premier garde la clé dans un en-tête d'autorisation (Bearer) et gère l'idempotence par un en-tête ; le second met la clé dans le corps et ne documente rien de tel dans ce guide. Pour une file qui réessaie, cette différence pèse plus que le prix.

Ce que coûte l'envoi à 10 000, 50 000 et 125 000 e-mails

Service 10 000 e-mails 50 000 e-mails 125 000 e-mails
Resend20 $ (Pro ; l'offre gratuite s'arrête à 3 000)20 $ (Pro)Pas de palier lu à 125 000 ; curseur : Pro 35 $ à 100 000, Scale 160 $ à 200 000
Postmark15 $ (Basic)55 $ (Basic, curseur)115 $ (Basic, curseur)
Mailgun15 $ (Basic)35 $ (Foundation)90 $ + 25 × 1,10 $ = 117,50 $ (Scale)
SendGridAucun prix sous 50 000dès 19,95 $ (Essentials)Pro dès 89,95 $, montant à lire sur le sélecteur
Amazon SES10 × 0,10 $ = 1 $ (à la carte)50 × 0,10 $ = 5 $125 × 0,10 $ = 12,50 $
SparkPost (Bird)Palier inexistant entre 1 000 et 50 00015 $ (Startup)Entre 30 $ (Startup, 100K) et 175 $ (Growth, 250K)
Mandrill20 $ (un bloc)40 $ (deux blocs)100 $ (cinq blocs)

Sources : Resend, Postmark, Mailgun, SendGrid, Amazon SES, SparkPost chez Bird et Mandrill. Dollars américains, hors taxes. SES passe à 0,16 $ les 1 000 sous le plan Essentials.

L'écart entre services va de un à dix, mais il dit peu de l'effort : SES économise quelques dizaines de dollars à 50 000 e-mails et coûte des jours d'intégration. Le classement change aussi avec le volume : à 10 000 e-mails, Postmark et Mailgun à 15 $ passent sous Resend Pro, à 125 000 Resend devant les deux.

Historique, environnement de test et courrier entrant

Service Historique annoncé Pour tester sans vrais destinataires Courrier entrant
Resend30 joursAdresses resend.devDomaine vérifié ou adresse resend.app, avec webhook
Postmark45 jours, jusqu'à 365 dès ProJeton POSTMARK_API_TESTJSON posté vers votre URL, plans Pro et Platform
SendGrid3 jours (Essentials), 7 (Pro)Mode sandbox de Mail SendInbound Parse
Mailgun1 jour (offre gratuite, Basic), 5 (Foundation), 30 (Scale)Non luRoutes (filtre plus action)
Amazon SESÀ reconstituer avec les événementsBac à sable du compte et simulateur de boîte aux lettresMail Manager, facturé à part
SparkPost (Bird)30 joursDomaine bac à sable, cinq messages à vieNon lu
MailjetNon cité par la page tarifsNon luAPI Parse
MandrillNon cité par la page tarifsJusqu'à 500 envois gratuits vers un domaine vérifiéNon lu

« Non lu » indique une page que je n'ai pas pu consulter, pas une absence de fonction. Les durées d'historique viennent des pages tarifs et des guides d'éditeurs liés plus bas.

Six vérifications avant de vous engager

  1. Les erreurs et les limites sont-elles lisibles ? Resend renvoie des en-têtes ratelimit-limit, ratelimit-remaining, ratelimit-reset et retry-after ; SendGrid des X-RateLimit-* et un 429 ; Mailjet un 429 par clé et par seconde. Un client qui lit ces valeurs ralentit avant l'échec au lieu de s'acharner.
  2. Un réessai peut-il doubler un e-mail ? Seuls Resend et SparkPost documentent une clé d'idempotence de 24 heures parmi les services comparés ici. Avec les autres, votre file doit enregistrer les envois déjà faits, par exemple par identifiant de commande.
  3. Les webhooks sont-ils vérifiables ? La signature, le calendrier de réessais et l'identifiant de dédoublonnage décident de la facilité du traitement ; la comparaison est dans la section précédente.
  4. Peut-on tester sans toucher la réputation ? Adresses de test chez Resend, jeton de test chez Postmark, sandbox chez SendGrid et SparkPost, simulateur chez SES : un test envoyé à une vraie adresse compte dans le quota et peut produire un vrai rebond.
  5. L'historique couvre-t-il vos tickets de support ? Un jour de journal ne répond pas à un client qui écrit une semaine après. Le tableau ci-dessus donne l'ordre de grandeur de chaque service.
  6. Le courrier entrant et les listes de suppression sont-ils prévus ? Si votre produit traite les réponses, comparez routes, Inbound Parse et JSON entrant ; si vous gérez des rebonds, vérifiez que la liste de suppression est accessible par API.

Du premier appel à la production, en cinq étapes

Commencez par authentifier le domaine d'envoi (SPF, DKIM, DMARC) et créez une clé limitée à l'envoi, distincte de celle qui gère les domaines et les modèles. Envoyez ensuite vers les adresses de test du service jusqu'à ce que la livraison, le rebond et la plainte produisent chacun l'événement attendu dans votre base. Construisez la clé d'idempotence sur l'événement métier, type-de-message/identifiant, comme le conseille la documentation de Resend. Écrivez le point de terminaison de webhook en lisant le corps brut, en vérifiant la signature ou l'authentification, puis en enregistrant l'identifiant d'événement pour ignorer un doublon. Enfin, surveillez les quotas : Resend renvoie un en-tête x-resend-monthly-quota, et x-resend-daily-quota uniquement pour le plan gratuit, de quoi alerter avant d'atteindre le plafond.

Les dix services en détail

Chaque fiche couvre la documentation et les SDK, l'envoi et ses limites, les webhooks, puis le prix et ce qui peut gêner. Toutes les données viennent des pages d'éditeurs liées.

#1

Resend

Idéal pour : Développeurs TypeScript ou React qui veulent une API courte, des webhooks signés et une idempotence documentée.

Gratuit : 3 000 e-mails par mois, 100 par jour. Pro 20 $ pour 50 000. Scale 90 $ pour 100 000. Supplément : 0,90 $ les 1 000.

Documentation et SDK

La page des SDK liste des bibliothèques officielles pour Node.js, PHP, Laravel, Python, Ruby, Go, Java, Rust et .NET, plus un dépôt OpenAPI. Le paramètre react de l'appel d'envoi n'existe que dans le SDK Node.js ; un modèle publié se référence par son identifiant avec des variables.

Envoi et limites

Le point d'envoi par lots accepte 100 e-mails par appel mais pas encore de pièces jointes ; un e-mail ne dépasse pas 40 Mo et ne compte pas plus de 50 destinataires dans to. La limite par défaut est de 10 requêtes par seconde et par équipe, avec des en-têtes ratelimit-* et retry-after. L'en-tête Idempotency-Key (256 caractères, 24 heures) rend les réessais sûrs. Toute requête sans User-Agent reçoit un 403.

Webhooks et tests

Les webhooks portent des en-têtes Svix et se vérifient avec le SDK ; en cas d'échec, Resend réessaie huit fois (tout de suite, puis après 5 secondes, 5 minutes, 30 minutes, 2 h, 5 h et deux fois 10 h), puis désactive l'endpoint s'il échoue en continu. Pour tester, delivered@resend.dev, bounced@resend.dev et complained@resend.dev simulent chacun le cas correspondant.

Prix et frein

Selon la page tarifs, le curseur place Pro à 35 $ pour 100 000 e-mails et Scale à 160 $ pour 200 000. Je n'ai pas lu de palier à 125 000 e-mails : lisez ce montant sur le curseur plutôt que de le déduire du supplément de 0,90 $ les 1 000. L'offre gratuite s'arrête à 100 e-mails par jour ; l'historique est de 30 jours sur tous les plans. Voir Resend contre Postmark.

#2

Postmark

Idéal pour : Équipes pour qui des messages isolés (réinitialisation, reçu) priment sur le prix unitaire, avec des flux séparés.

Offre d'essai de 100 e-mails par mois ; Basic à 15 $ pour 10 000 e-mails, 1,80 $ par tranche supplémentaire de 1 000 ; Pro 16,50 $ et Platform 18 $.

Documentation et SDK

Les bibliothèques officielles couvrent TypeScript, Node.js, Python, Ruby, Rails, .NET, Java et PHP, avec une CLI en plus. Les modèles se gèrent par API (jusqu'à 100 par serveur) et s'envoient avec TemplateAlias et TemplateModel.

Envoi et limites

Un message accepte 50 destinataires au plus (To, CC et BCC cumulés) et 10 Mo ; le point d'envoi par lots accepte 500 messages et 50 Mo. Le champ MessageStream choisit le flux, outbound par défaut. Le jeton POSTMARK_API_TEST à la place du jeton de serveur valide une requête sans l'envoyer. Je n'ai pas trouvé de clé d'idempotence dans la documentation d'envoi.

Webhooks

Postmark ne signe pas ses webhooks : la documentation recommande l'authentification Basic dans l'URL et une liste d'adresses IP autorisées. Six tentatives sont prévues (1, 5, 10, 10, 10 et 15 minutes), avec X-PM-Retries-Remaining et un X-PM-Webhook-Trace-Id stable pour dédoublonner. Les API Bounce et Suppressions exposent des types comme HardBounce, Transient et SpamComplaint.

Prix et frein

Aucun palier n'existe entre 100 et 10 000 e-mails. Sur le curseur de la page tarifs, Basic affichait 55 $ à 50 000 e-mails et 115 $ à 125 000. L'historique de 45 jours est modifiable de 7 à 365 jours à partir de Pro.

#3

Mailgun

Idéal pour : Back-ends qui reçoivent aussi du courrier et veulent envois groupés, planification et journaux détaillés.

Gratuit : 100 e-mails par jour. Basic 15 $ pour 10 000. Foundation 35 $ pour 50 000. Scale 90 $ pour 100 000.

Documentation et SDK

Les SDK officiels couvrent Go, Node.js, PHP, Java, Ruby et Python. L'API de messages attend du multipart/form-data avec une authentification HTTP Basic (utilisateur api) ; la documentation ne décrit pas de corps JSON pour l'envoi.

Envoi et limites

Un envoi groupé va jusqu'à 1 000 destinataires avec des variables par destinataire ; o:deliverytime programme la livraison jusqu'à trois jours à l'avance, sept jours avec un plan qui conserve au moins sept jours de données. L'API de validation d'adresses est un produit facturé à part. Aucune clé d'idempotence n'apparaît dans les pages lues.

Webhooks et réception

Chaque POST est signé par un HMAC-SHA256 du couple timestamp + token avec une clé de signature valable pour tout le compte ; les échecs sont réessayés pendant environ huit heures, sauf réponse 406. Les routes entrantes associent un filtre et une action (forward(), store(), stop()). Un serveur MCP officiel existe, exécuté en local.

Prix et frein

Mailgun affiche un jour d'historique sur l'offre gratuite et sur Basic, cinq sur Foundation, 30 sur Scale. À 125 000 e-mails, Scale revient à 90 $ + 25 × 1,10 $ = 117,50 $. Comparaison : SendGrid contre Mailgun.

#4

SendGrid

Idéal pour : Entreprises avec un contrat Twilio, qui veulent une large couverture de bibliothèques et l'e-mail marketing à côté.

Essai de l'API : 100 e-mails par jour pendant 60 jours. Essentials dès 19,95 $, Pro dès 89,95 $.

Documentation et SDK

Sept bibliothèques officielles existent : C#, Go, Java, Node.js, PHP, Python et Ruby. Les modèles dynamiques ont des identifiants en d-, utilisent Handlebars et lisent dynamic_template_data.

Envoi et limites

L'API v3 accepte 1 000 personnalisations par requête, une planification jusqu'à 72 heures, un batch_id pour annuler ou suspendre un lot et un mode sandbox qui valide la requête sans envoyer. Les réponses portent des en-têtes X-RateLimit-* et un 429 au dépassement.

Webhooks et réception

L'Event Webhook peut être signé en ECDSA ou protégé par OAuth 2.0, et les événements non reçus sont réessayés pendant 24 heures glissantes. Inbound Parse poste le courrier reçu vers votre URL, avec nouveaux essais sur les erreurs 5xx.

Prix et frein

La page tarifs n'affiche aucun prix sous 50 000 e-mails par mois, et Essentials n'autorise que deux points de terminaison d'Event Webhook. Les produits Email API et Marketing Campaigns se facturent séparément.

#5

Amazon SES

Idéal pour : Équipes déjà sur AWS, à l'aise avec IAM et SNS, qui traitent l'e-mail comme de l'infrastructure.

Tarif à la carte de 0,10 $ pour 1 000 e-mails, pièces jointes à 0,12 $ le Go ; le plan Essentials (0,16 $ les 1 000) est celui où démarrent les nouveaux comptes.

Documentation et accès

Le point d'entrée est l'API SES, l'interface SMTP ou un SDK AWS, selon la page tarifs. L'authentification passe par IAM, qui limite aussi les adresses permises en « From », en destinataire et en « Return-Path ». L'API v2 propose SendBulkEmail pour 50 destinations par appel.

Envoi et limites

Chaque nouveau compte démarre en bac à sable : 200 messages par 24 heures, un message par seconde, destinataires vérifiés uniquement ; l'accès en production se demande par région. Un message ne dépasse pas 40 Mo via l'API v2 ou SMTP, et 50 destinataires.

Événements

Les jeux de configuration publient les événements vers CloudWatch, Amazon Data Firehose, Pinpoint, SNS ou EventBridge, jusqu'à dix destinations par jeu. Une liste de suppression au niveau du compte se gère par API ou console. Il n'y a pas de webhook direct vers votre URL : il faut brancher un de ces destinataires.

Prix et frein

À la carte, 125 000 e-mails coûtent 12,50 $ ; les nouveaux comptes démarrent depuis le 21 juillet 2026 sur Essentials à 0,16 $ les 1 000, soit 20 $, avec Virtual Deliverability Manager inclus. Une IP dédiée standard coûte 24,95 $ par mois. Le frein est l'assemblage : identités, bac à sable, files d'événements.

#6

Loops

Idéal pour : Équipes SaaS dont les e-mails produit sont édités par des non-développeurs, avec envoi transactionnel inclus.

Aucun frais de siège ; gratuit jusqu'à 4 000 envois par période de 30 jours (1 000 contacts les plus récents), puis 99 $ vers 10 000 contacts et 249 $ vers 50 000.

Ce que Loops expose

Selon sa page d'accueil, Loops envoie des e-mails marketing, produit et transactionnels depuis un seul endroit ; l'envoi transactionnel se fait par un POST vers app.loops.so/api/v1/transactional avec authentification. Je n'ai pas relu la liste de ses SDK ni ses règles d'idempotence ; vérifiez-les avant d'intégrer une file qui réessaie.

Déclencheurs

La documentation des déclencheurs décrit quatre types ; « Event received » lance un flux à la réception d'un événement, une fois ou à chaque fois. Le contenu et la logique vivent dans l'éditeur, pas dans votre code.

Prix et frein

Selon la page tarifs, le plan gratuit autorise des contacts illimités, 4 000 envois sur 30 jours glissants et dix e-mails par seconde ; le curseur affiche 99 $ à 9 998 abonnés et 249 $ à 49 989. Aucun siège n'est facturé. Comme le prix suit les contacts, un produit avec peu d'e-mails système et beaucoup de comptes paie pour des adresses qui ne reçoivent presque rien.

#7

Customer.io

Idéal pour : Équipes produit avec des données d'événements qui orchestrent e-mail, notifications push, notifications dans l'application et WhatsApp.

À partir de 100 $ par mois (Essentials, 5 000 profils, 1 million d'e-mails compris) ; 145 $ pour 10 000 profils ; Premium dès 1 000 $.

Ce que la plateforme expose

La page tarifs liste un éditeur visuel de flux de travail, des canaux e-mail, notification push, notification dans l'application et WhatsApp, un agent IA et un serveur MCP ; l'éditeur existe en glisser-déposer et en code. Les profils (personnes et objets) sont l'unité de facturation.

Logique des flux de travail

La documentation décrit des automatisations déclenchées par événement, des objectifs avec fenêtre de conversion jusqu'à 90 jours et, depuis juillet 2026, des conditions de sortie par segment ou événement. Je n'ai pas relu la liste de ses SDK : l'intégration consiste surtout à envoyer des attributs et des événements.

Prix et frein

Essentials coûte 100 $ pour 5 000 profils, 145 $ pour 10 000 et 235 $ pour 20 000, avec 0,009 $ par profil en plus et 0,12 $ par tranche de 1 000 e-mails supplémentaires. Un an gratuit est offert aux entreprises ayant levé moins de 10 millions de dollars. Pour un service qui n'envoie que des réinitialisations et des reçus, c'est surdimensionné.

#8

Mailjet

Idéal pour : Équipes qui veulent une API d'envoi et un éditeur pour non-développeurs dans un seul compte.

Gratuit : 6 000 e-mails par mois, 200 par jour. Starter 9 $ pour 8 000. Essential 19 $ pour 15 000. Premium 29 $.

Documentation et SDK

Le guide des SDK liste PHP, Node.js, Ruby, Python, Java, Go et C#. La Send API v3.1 attend un JSON avec un tableau Messages ; un modèle se référence par TemplateID avec TemplateLanguage: true.

Envoi et limites

Plusieurs messages dans une requête ne forment pas une opération atomique : chaque entrée est validée à part, et AdvanceErrorHandling: true détaille les erreurs. Les destinataires d'un même message se voient entre eux, il faut donc un message par personne pour l'éviter. La limite de débit est comptée par clé d'API et par seconde, avec un 429 au dépassement ; la valeur n'est pas publiée dans les pages lues.

Webhooks et réception

Les webhooks couvrent ouverture, clic, rebond, spam, blocage, désabonnement et envoi ; sans réponse 200, Mailjet réessaie toutes les 30 secondes pendant 24 heures. La documentation recommande HTTPS avec authentification Basic. L'API Parse traite le courrier entrant via une route.

Prix et frein

Selon la page tarifs, les paliers s'arrêtent à 15 000 e-mails ; au-delà, c'est au sélecteur de répondre. Le plafond de 200 e-mails par jour du plan gratuit bride les envois groupés. Mailjet est aussi l'éditeur de MJML, comme le rappelle la comparaison MJML contre React Email.

#9

SparkPost (Bird)

Idéal pour : Produits à volume moyen ou élevé et prévisible, qui comparent des tranches de prix et des IP dédiées optionnelles.

Gratuit : 1 000 e-mails par mois. Startup dès 15 $ (50K à 100K), Growth dès 80 $ (100K à 2,5 M). IP dédiée 24,95 $ par mois.

Documentation et API

L'API Transmissions envoie à un destinataire ou à des milliers, avec un contenu en ligne, un modèle stocké ou un test A/B ; un domaine bac à sable permet cinq messages d'essai sur toute la durée de vie du compte. Le site sparkpost.com redirige désormais vers les pages de Bird, qui publie aussi un serveur MCP hébergé.

Envoi et limites

L'en-tête Idempotency-Key est mémorisé 24 heures. La taille d'un message est limitée à 20 Mo, la conservation à 30 jours sur tous les plans. La limite de dépassement par défaut est de cinq fois le plan : au-delà, l'envoi s'interrompt sauf accord contraire.

Webhooks

Les événements arrivent par lots avec l'en-tête X-MessageSystems-Batch-ID, utile contre les doublons ; un lot sans réponse 200 est réessayé pendant huit heures avant d'être écarté, avec un délai d'attente de dix secondes. L'authentification Basic et des en-têtes personnalisés sont possibles.

Prix et frein

La page tarifs affiche 15 $ à 50 000 et 30 $ à 100 000 sur Startup, puis 80 $ à 100 000, 175 $ à 250 000 et 295 $ à 500 000 sur Growth. Entre le gratuit (1 000 e-mails, 50 par jour) et 50 000, il n'y a pas de palier : un petit produit paie pour une tranche qu'il n'utilise pas.

#10

Mailchimp Transactional (Mandrill)

Idéal pour : Équipes qui ont déjà un plan Mailchimp payant et veulent envoyer leurs e-mails système dans le même écosystème.

20 $ par bloc de 25 000 e-mails. IP dédiée 29,95 $ par mois. Condition : Mailchimp Standard ou Premium.

Documentation et appel

Le guide du premier envoi montre un appel POST https://mandrillapp.com/api/1.0/messages/send avec un corps JSON contenant la clé d'API et un objet message ; des exemples existent en cURL, Node, PHP, Ruby et Python.

Blocs et conditions

Chaque bloc donne droit à 25 000 e-mails : de 1 à 20 blocs, 20 $ le bloc, de 21 à 40, 18 $. Les e-mails non utilisés d'un bloc ne se reportent pas, et l'envoi s'arrête quand les blocs sont épuisés. Selon la page tarifs, le service est un complément des plans Standard et Premium de Mailchimp ou de l'ancien plan mensuel ; les nouveaux utilisateurs reçoivent jusqu'à 500 envois gratuits vers un domaine vérifié.

Webhooks

Un seul POST regroupe jusqu'à 1 000 événements dans le paramètre mandrill_events (envoi, report, rebond dur et mou, livraison, ouverture, clic, spam, désabonnement, rejet), environ une fois par minute. Sans réponse 200, le POST est retenté jusqu'à 20 fois à 15 à 25 minutes d'intervalle, et un webhook trop défaillant est désactivé.

Prix et frein

Cinq blocs, soit 125 000 e-mails, coûtent 100 $. Le mécanisme de blocs convient à des volumes stables, pas aux pics. Les équipes sans compte Mailchimp doivent d'abord acheter un abonnement marketing.

Erreurs fréquentes à l'intégration

  • Accepter un webhook sans vérification. Utilisez la signature quand elle existe, sinon l'authentification Basic et la liste d'IP.
  • Reformater le corps avant de vérifier la signature. Chez Resend, la vérification exige le corps brut ; un framework qui analyse déjà le JSON invalide la signature.
  • Ignorer les rebonds. Continuer d'écrire à des adresses refusées abîme la réputation du domaine. Postmark et Mailgun offrent des listes de suppression par API, SES une liste au niveau du compte.
  • Tester sur de vraies adresses. Les messages de test comptent dans le quota et peuvent nuire à la réputation ; utilisez les adresses de test des éditeurs.
  • Oublier le mois chargé. Paliers, blocs perdus et plafonds de dépassement décident ce qu'un pic de charge fait à la facture. Pour la séparation des flux et les domaines, lisez notre guide sur la délivrabilité et l'article sur les e-mails transactionnels et marketing.

Questions fréquentes

Quelle est la meilleure API e-mail pour un développeur qui démarre un produit ?

Resend et Postmark sont les plus directes : bibliothèques officielles pour les langages courants, un moyen de tester sans vraie livraison et une API intégrable en un après-midi. Resend est gratuit jusqu'à 3 000 e-mails par mois, Postmark commence à 15 $ pour 10 000. Qui travaille déjà sur AWS peut payer beaucoup moins avec Amazon SES, au prix d'une demande de sortie du bac à sable, de destinations d'événements et d'un journal à construire.

Qu'est-ce que l'idempotence et quels services la proposent ?

Une requête idempotente peut être répétée sans déclencher un deuxième envoi, ce qui évite les doublons après un délai dépassé ou un réessai de file. Resend documente l'en-tête Idempotency-Key (24 heures, 256 caractères) et SparkPost un en-tête équivalent de 24 heures. Dans la documentation d'envoi de Postmark, de Mailgun et de SendGrid, je n'ai pas trouvé de clé de ce genre : tenez alors un registre des messages déjà émis.

SMTP ou API : que choisir ?

Le SMTP suffit pour pointer un framework existant vers un autre serveur ; ce ne sont que quelques lignes de configuration. L'API se justifie dès qu'on veut des métadonnées, des étiquettes, des modèles à variables, des lots ou des envois planifiés, avec une réponse structurée. Mailgun, Postmark, Resend, SendGrid et SES proposent les deux.

Comment sécuriser les webhooks ?

Vérifiez d'abord ce que propose le service : signature Svix chez Resend, ECDSA ou OAuth 2.0 chez SendGrid, HMAC-SHA256 chez Mailgun, authentification Basic et liste d'IP chez Postmark et Mailjet. Pour les webhooks signés, lisez le corps brut de la requête sans le modifier, sinon la vérification échoue, et traitez chaque événement de façon idempotente puisque les envois sont réessayés.

Combien coûte l'envoi de 50 000 e-mails par mois ?

D'après les pages tarifs : Resend Pro 20 $, SendGrid Essentials dès 19,95 $, Mailgun Foundation 35 $, Postmark Basic 55 $ sur le curseur, Mandrill deux blocs (2 × 20 $ = 40 $), SparkPost Startup 15 $. Amazon SES revient à 50 × 0,10 $ = 5 $ à la carte, ou 50 × 0,16 $ = 8 $ dans le plan Essentials. Les prix changent ; les liens des fiches mènent aux sources.

Peut-on combiner plusieurs services ?

Oui, beaucoup d'équipes séparent les e-mails système et le marketing : les messages critiques via un expéditeur à la réputation distincte, le cycle de vie produit via Loops ou Customer.io. Chaque sous-domaine demande alors son SPF, son DKIM et son DMARC, et vous entretenez deux intégrations. Le coût est de l'exploitation ; le gain est qu'une vague de plaintes ne touche pas la réinitialisation de mot de passe.

Comment tester livraison, rebonds et plaintes sans vrais destinataires ?

Resend fournit des adresses resend.dev pour la livraison, le rebond, la plainte et la suppression. Postmark accepte la valeur POSTMARK_API_TEST à la place du jeton pour valider une requête sans livrer, SendGrid offre un mode sandbox dans l'appel Mail Send et Amazon SES un simulateur de boîte aux lettres. Intégrez ces cas à vos tests automatiques.