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.