Développeurs

Tutoriels d'intégration

Envoyer un e-mail transactionnel

Objectif : envoyer un e-mail depuis votre domaine (confirmation, notification, reçu) via le module Send, depuis un serveur — sans utilisateur connecté.

Prérequis : module Send disponible (Business+), un domaine expéditeur vérifié, et une clé API Send.

1. Vérifier le domaine expéditeur

Ajoutez et vérifiez votre domaine (SPF/DKIM) :

SEND=https://send.puwapi.com
curl -X POST $SEND/api/send/domains -H "Authorization: Bearer $JWT" \
  -H "Content-Type: application/json" -d '{"domain":"monentreprise.fr"}'
# puis, une fois les DNS posés :
curl -X POST $SEND/api/send/domains/$DOMAIN_ID/verify -H "Authorization: Bearer $JWT"

Sans domaine vérifié, la délivrabilité est mauvaise (les messages risquent le spam).

2. Créer une clé API Send

Dans le Hub (Send → Clés API) ou par l'API (POST /api/send/keys). Notez-la : elle n'est affichée qu'une fois.

3. Envoyer le message

curl -X POST $SEND/api/public/send/messages \
  -H "X-Server-API-Key: $SEND_KEY" -H "Content-Type: application/json" \
  -d '{
    "from": "contact@monentreprise.fr",
    "to": ["client@exemple.com"],
    "subject": "Votre commande est confirmée",
    "html": "<p>Merci pour votre commande !</p>"
  }'

Le message est mis en file (statut queued) puis envoyé par un dispatcher de fond avec limitation de débit par organisation et globale. La réponse renvoie un id de suivi.

4. Suivre le statut

curl $SEND/api/public/send/messages/$MESSAGE_ID -H "X-Server-API-Key: $SEND_KEY"

Les rebonds (bounces) sont gérés via DSN/VERP : un message non délivrable remonte son état.

Bon à savoir

  • Un léger délai est normal : la file lisse les pics et protège la réputation d'envoi.
  • Les modules internes (Identity, Forms, Careers…) utilisent cette même surface pour leurs e-mails transactionnels (confirmations, accusés) depuis no-reply@puwapi.com.
  • Pour envoyer depuis une interface (avec un JWT membre), utilisez POST /api/send/messages.

#tutorial #send