2mail — relais SMTP depuis une infrastructure belge

SMTP pour Python — le courrier de votre script ou app Django qui arrive

Python intègre SMTP : avec smtplib, vous envoyez un message en quelques lignes, et Django regroupe cela dans sa propre couche mail avec des réglages EMAIL. Ce qu'aucun des deux ne fournit, c'est la délivrabilité — elle dépend du serveur par lequel vous envoyez.

Que vous ayez un script isolé, une app Flask ou un projet Django : les réglages sont les mêmes cinq données. Vous les pointez vers votre relais et le code qui construit les messages demeure inchangé.

Pourquoi cela coince sans relais

Le courrier Python vient souvent de l'arrière-plan : un rapport nocturne, une tâche cron qui envoie des factures, un script qui alerte quand une mesure sort de la marge. Personne ne le surveille — et donc personne ne remarque que le serveur destinataire les refuse en silence. Avec Django s'ajoute la surprise classique de la mise en production : en développement, tout va vers la console, en production vers de vrais fournisseurs qui contrôlent bel et bien la réputation.

Configurer le SMTP dans Python

1

Récupérer les données

Connectez-vous à votre compte 2mail et récupérez-y votre serveur SMTP, votre nom d'utilisateur et votre mot de passe.

2

Compléter dans Python

Dans un projet Django, vous définissez les réglages EMAIL dans les settings : le backend SMTP comme backend e-mail, l'hôte du relais, le port 587, l'option STARTTLS activée, le nom d'utilisateur et le mot de passe, et une adresse d'expéditeur par défaut sur votre propre domaine. Si vous travaillez directement avec smtplib, vous vous connectez à l'hôte sur le port 587, vous appelez starttls, vous vous identifiez avec le nom d'utilisateur et le mot de passe, puis vous envoyez le message. Dans les deux cas, lisez les données depuis des variables d'environnement, pas depuis le code.

3

Authentifier le domaine

Veillez à ce que SPF, DKIM et DMARC soient correctement configurés pour votre domaine, afin que les destinataires puissent vérifier que le courrier vient bien de vous.

4

Tester

Envoyez un message de test vers une adresse chez un grand fournisseur et vérifiez qu'il arrive dans la boîte de réception et non dans les indésirables.

Les champs que Python demande

Chaque plateforme les nomme un peu différemment, mais il s'agit toujours des mêmes cinq champs. Les valeurs concrètes sont liées à votre compte et se trouvent dans votre compte 2mail — relevez-les à cet endroit, afin d'être certain d'utiliser les bonnes.

Champ Ce que vous indiquez
Serveur SMTP (host)Le nom de serveur figurant dans votre compte 2mail.
PortLe port correspondant au chiffrement que vous avez choisi ; votre compte indique lequel.
ChiffrementTLS. N'envoyez jamais sans chiffrement — vos identifiants circuleraient sinon en clair sur le réseau.
Nom d'utilisateurL'identifiant SMTP de votre compte 2mail.
Mot de passeLe mot de passe correspondant. N'utilisez jamais le mot de passe de la boîte aux lettres d'un collaborateur.

Les e-mails que Python envoie

Dès que le relais est configuré, tous ces messages passent par 2mail — vous ne devez pas les configurer un par un.

Réinitialisation de mot de passe et vérification d'adresse depuis Django
Rapports planifiés et exports issus de tâches cron
Alertes de scripts de monitoring et de traitement de données
Factures et confirmations issues d'une application web
Rapports d'erreur vers les administrateurs

Pièges avec Python

Option TLS et port doivent correspondre

Django connaît deux réglages TLS distincts : un pour STARTTLS et un pour TLS dès le début. N'activez que celui pour STARTTLS, qui correspond au port 587. Les deux à la fois provoquent une erreur de configuration ; aucun des deux envoie votre identifiant en clair, ce qu'un relais refuse à juste titre.

Une connexion par série, pas par message

Un script qui ouvre une nouvelle connexion SMTP pour chacun de mille messages se comporte comme un attaquant. Ouvrez une connexion, envoyez la série, fermez. Django dispose pour cela d'une fonction qui envoie plusieurs messages sur une seule connexion.

Erreurs silencieuses dans les tâches de fond

Une exception dans une tâche cron disparaît dans un fichier journal que personne ne lit. Interceptez les erreurs d'envoi et signalez-les là où elles se voient — et connectez les webhooks de 2mail pour la livraison et les bounces, afin de voir aussi ce qui échoue après la remise.

SPF, DKIM & DMARC expliqués À propos de la délivrabilité

Une autre plateforme ?

SMTP est un protocole standard : tout système qui parle SMTP — un CRM, un ERP, une application maison ou un serveur — peut envoyer via 2mail avec les mêmes cinq champs.

Questions fréquentes sur le SMTP pour Python

smtplib et Django envoient, mais ne fournissent pas la délivrabilité : celle-ci dépend du serveur par lequel vous envoyez. Une fonction mail locale ou un serveur neuf n'a ni authentification ni réputation. Un relais SMTP avec des enregistrements SPF, DKIM et DMARC corrects règle le problème.
Le backend SMTP comme backend e-mail, l'hôte du relais, le port 587, l'option STARTTLS activée, votre nom d'utilisateur et votre mot de passe, et une adresse d'expéditeur par défaut sur votre propre domaine. Conservez l'identifiant dans des variables d'environnement, pas dans les settings eux-mêmes.
Connectez-vous à l'hôte sur le port 587, appelez starttls, identifiez-vous avec le nom d'utilisateur et le mot de passe, puis envoyez le message. Pour plusieurs messages, utilisez la même connexion au lieu d'en ouvrir une nouvelle par message.
Dans votre compte 2mail, par application. Ils sont liés au compte, nous ne les publions donc pas sur le site web. Créez de préférence un identifiant propre par script ou application, afin de pouvoir le révoquer séparément et suivre ce trafic à part.
Appelez-nous
Envoyer un e-mail