Guides
Venir de Resend
Ce qui reste identique entre Resend et Mail, ce qui change, et la liste à cocher pour basculer ton code sans casser un envoi.
L’API de Mail reprend le format de Resend. Une requête écrite pour Resend part presque telle quelle : il faut changer l’adresse de l’API, la clé et le domaine d’envoi. Cette page dit ce qui ne bouge pas, ce qui change et ce qu’il reste à faire.
Ce qui ne change pas
- Le format des requêtes :
from,to,subject,html,text,cc,bcc,reply_to,headersettagsont le même nom et le même sens. - Le chemin des envois :
POST /emailspour un e-mail,POST /emails/batchpour un lot de 100 au plus. - La réponse : un envoi réussi renvoie
{ "id": "…" }, et un lot renvoie{ "data": [{ "id": "…" }, …] }. - Les erreurs : même forme, avec
statusCode,nameetmessage. Le détail des codes est dans Erreurs. - L’authentification : un en-tête
Authorization: Bearer …. - L’idempotence : l’en-tête
Idempotency-Keyfonctionne de la même façon. Voir Envoyer sans doublon.
Ce qui change
| Élément | Resend | |
|---|---|---|
| Adresse de base | https://api.resend.com | L’adresse de l’API de ton espace, voir Introduction à l’API |
| Préfixe de clé | re_… | am_… |
| Domaine d’envoi | Vérifié chez Resend | À vérifier dans ton espace Mail, avec tes propres enregistrements DNS |
| Pied de page | Rien, sauf ce que tu ajoutes | Chaque e-mail envoyé par l’API porte la mention « Propulsé par HGDC ». Elle est ajoutée à l’envoi et ne se retire pas. |
| Désabonnement | Ce que tu ajoutes | Un e-mail envoyé à un seul destinataire peut recevoir {{lien_desabonnement}}, rempli à l’envoi. Les campagnes et les workflows ont toujours le lien. |
Les variables
Les formes courantes des modèles Resend marchent sans retouche. {{{FIRST_NAME}}} et {{{LAST_NAME}}} sont acceptés tels quels.
| Forme Resend | Chez Mail |
|---|---|
{{{FIRST_NAME}}} | {{{FIRST_NAME}}} (accepté) ou {{prenom}} |
{{{LAST_NAME}}} | {{{LAST_NAME}}} (accepté) ou {{nom}} |
{{{RESEND_UNSUBSCRIBE_URL}}} | {{{RESEND_UNSUBSCRIBE_URL}}} (accepté) ou {{lien_desabonnement}} |
Pour la liste complète et les valeurs de secours ({{prenom|à toi}}), voir Variables et API e-mails.
Garder le SDK Resend
Si ton code utilise le SDK Resend officiel, tu peux le garder en changeant seulement l’adresse de base et la clé. La façon de les régler dépend de ta version du SDK : vérifie qu’elle accepte une adresse de base personnalisée, sinon passe-la explicitement à la création du client.
Le client TypeScript de Mail, dans Premier envoi depuis Node.js, renvoie des erreurs typées : c’est souvent le chemin le plus simple.
Ce qui n’est pas encore pris en charge
Ces champs de Resend ne sont pas gérés. L’API les refuse avec un 422 au lieu de les ignorer : une pièce jointe ou un envoi programmé ne disparaît pas en silence.
| Champ | Ce qui se passe | Que faire |
|---|---|---|
attachments | Refusé (422) | Héberge le fichier et mets un lien dans le message. |
scheduled_at | Refusé (422) | Envoie au moment voulu depuis ton système, ou prépare un workflow avec une attente. |
react | Refusé (422) | Envoie le HTML rendu, dans html. |
topic_id | Refusé (422) | Retire le champ. Le désabonnement passe par le lien de l’e-mail, voir Désabonnement et blocages. |
Checklist de bascule
- Le domaine d’envoi est Prêt dans Domaines.
- Une clé
am_…est créée dans Clés d’API, et rangée dans tes variables d’environnement. - L’adresse de base pointe sur l’API de Mail, et l’ancienne clé
re_…n’est plus lue nulle part. - Aucun appel n’utilise
attachments,scheduled_at,reactoutopic_id. - Les variables des modèles sont vérifiées, avec une valeur de secours là où un contact peut ne pas avoir l’information.
- Un envoi test part vers une adresse à toi, et apparaît dans E-mails.
- Les envois qui doivent être uniques passent par
Idempotency-Key, avec une clé métier. - Si ton code lit le statut d’un e-mail, vérifie les valeurs reçues. Elles sont décrites dans Statuts des e-mails.
- Tu envoies un petit volume pendant quelques jours, puis tu montes. Un domaine neuf a besoin de temps pour gagner sa réputation. Voir Délivrabilité.
- Ta clé Resend est révoquée une fois la bascule confirmée.
Si ça ne marche pas
422sur un champ : le champ est dans la liste des champs non pris en charge. Retire-le ou remplace-le par son équivalent.403 invalid_api_keyaprès la bascule : l’ancienne clére_…est encore utilisée quelque part. Remplace-la par une cléam_….
Cette page t'a aidé ?
Merci, c'est noté.