Guide développeur

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. 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. 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. 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.

    go
    package 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. 4

    Ou testez rapidement avec curl

    Pour un test manuel avant d'intégrer, le même envoi tient en un curl.

    bash
    curl -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. 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.

Prêt à envoyer votre premier email ?