Envoyer un email transactionnel en Python sans serveur SMTP
Configurer SMTP pour un mot de passe oublié n’est pas du travail produit. En Python, un client HTTP typé suffit pour remettre ce problème à Spore : votre application décrit le message, la plateforme gère DKIM, la file d’envoi, les retries et les bounces.
Ce que nous allons construire
Un envoi de bienvenue depuis une application Python, sûr à retenter après une coupure réseau et observable jusqu’à sa livraison.
1. Préparer le domaine et la clé
Dans Spore, ajoutez votre domaine, publiez les enregistrements DKIM et SPF, puis
activez l’adresse hello@votredomaine.fr. Créez ensuite une clé API et gardez-la
hors du dépôt :
export SPORE_API_KEY="sk_live_..."
pip install spore-email2. Configurer le client une fois
import os
import spore_email
configuration = spore_email.Configuration(
api_key={"BearerAuth": os.environ["SPORE_API_KEY"]},
api_key_prefix={"BearerAuth": "Bearer"},
)3. Envoyer avec une clé d’idempotence
from uuid import uuid4
from spore_email.api.messaging_api import MessagingApi
from spore_email.models.send_email_send_email_request import SendEmailSendEmailRequest
message = SendEmailSendEmailRequest(
var_from="hello@votredomaine.fr",
to=["alex@example.com"],
subject="Votre compte est prêt",
html="<p>Bienvenue Alex.</p>",
)
with spore_email.ApiClient(configuration) as client:
sent = MessagingApi(client).send_email(message, idempotency_key=str(uuid4()))L’API répond 202 parce que l’envoi est asynchrone. Votre requête n’attend pas
la réponse du serveur mail du destinataire.
4. Rendre le retry sûr
Ne générez pas une nouvelle clé à chaque tentative technique. Associez-la à
l’action métier — l’identifiant de commande, d’inscription ou de tâche. Si le
processus tombe après le POST, la même clé renvoie la première réponse pendant
24 heures, sans nouvel email.
5. Observer la livraison
Conservez sent.message_id, puis consultez GET /emails/{id} pour voir chaque
tentative SMTP. En production, branchez plutôt les webhooks email.sent,
email.bounced et email.failed.
Pourquoi ce chemin est plus simple
Votre code Python ne contient ni socket SMTP, ni clé DKIM, ni logique de backoff. Il exprime seulement l’intention : envoyer cet email une fois. C’est la bonne frontière pour une application solo-maintenable.
Prochaine étape : consultez la documentation du SDK Python
ou la référence de sendEmail.