Envoyer un email en Go sans serveur SMTP
Envoyez un email transactionnel signé DKIM depuis Go avec net/http — aucun serveur SMTP, aucune dépendance externe. Voici les étapes, avec la librairie standard ou curl.
- 1
Ajoutez et vérifiez votre domaine
Ajoutez votre domaine d'envoi dans Spore et publiez les enregistrements DNS proposés (DKIM, SPF, DMARC). Spore les valide automatiquement une fois propagés.
- 2
Créez une clé API
Générez une clé API (sk_live_…) et exposez-la via SPORE_API_KEY. À charger depuis l'environnement, jamais en dur dans le code.
- 3
Envoyez avec net/http
Aucune dépendance externe : la librairie standard suffit. Construisez le corps JSON, ajoutez l'en-tête Bearer, et postez sur /emails.
gopackage main import ( "bytes" "encoding/json" "fmt" "net/http" "os" ) func main() { body, _ := json.Marshal(map[string]any{ "from": "hello@yourdomain.com", "to": []string{"alex@example.com"}, "subject": "Welcome aboard", "html": "<p>Hi Alex, your account is ready.</p>", }) req, _ := http.NewRequest("POST", "https://api.sporee.fr/emails", bytes.NewReader(body)) req.Header.Set("Authorization", "Bearer "+os.Getenv("SPORE_API_KEY")) req.Header.Set("Content-Type", "application/json") res, err := http.DefaultClient.Do(req) if err != nil { panic(err) } defer res.Body.Close() fmt.Println("status:", res.Status) } - 4
Ou testez rapidement avec curl
Pour un test manuel avant d'intégrer, le même envoi tient en un curl.
bashcurl -X POST https://api.sporee.fr/emails \ -H "Authorization: Bearer $SPORE_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "from": "hello@yourdomain.com", "to": ["alex@example.com"], "subject": "Welcome aboard", "html": "<p>Hi Alex, your account is ready.</p>" }' - 5
Vérifiez la livraison
Interrogez GET /emails/:id pour l'historique par tentative, ou branchez un webhook pour les événements email.sent, email.bounced et email.failed.
Questions fréquentes
- Peut-on envoyer un email en Go sans librairie tierce ?
- Oui. Avec Spore, net/http de la librairie standard suffit : un POST JSON sur /emails avec un en-tête Bearer.
- Un SDK Go est-il disponible ?
- Un client Go généré est en cours (WIP). En attendant, l'appel net/http direct est pleinement fonctionnel.
- Faut-il gérer soi-même DKIM et les bounces ?
- Non. Spore signe en DKIM côté serveur et gère les bounces et suppressions automatiquement.