Configuration SMTP par fournisseur
TimePick a besoin d'un serveur d'envoi d'emails pour les liens de connexion (magic links), les invitations et les notifications aux membres. Le transport par défaut est SMTP, qui fonctionne sur la quasi-totalité des hébergements. Un sélecteur Mode d'envoi propose aussi une catégorie Envoi par API (HTTP) — avec un sous-menu de plusieurs fournisseurs — pour les hébergeurs qui bloquent tout SMTP sortant (voir la section dédiée). Cette fiche décrit comment configurer les fournisseurs les plus courants pour une association.
Le SMTP se configure à deux endroits possibles, qui se complètent :
- Variables
SMTP_*au premier démarrage du conteneur — pré-remplissent l'assistant de configuration et peuvent provisionner directement la base de données. Voir Variables d'environnement et Configuration initiale. - Panneau Paramètres → Serveur d'email, dans l'application elle-même, une fois le premier administrateur créé. C'est la méthode recommandée pour modifier la configuration SMTP après le déploiement initial — voir Paramètres in-app.
Quel que soit le point d'entrée, un bouton Tester la connexion envoie un email de test avant d'enregistrer la configuration. Il est fortement recommandé de l'utiliser systématiquement, en particulier pour les fournisseurs marqués « à confirmer » ci-dessous.
Pour aller plus loin
Cette fiche couvre uniquement la configuration technique (hôte, port, identifiants). Les réglages qui améliorent la délivrabilité des emails (SPF, DKIM, DMARC) sont traités dans Délivrabilité email.
Comment TimePick choisit son serveur SMTP
À chaque envoi d'email, TimePick résout sa configuration SMTP selon l'ordre de priorité suivant :
- Configuration en base de données (saisie via l'assistant de premier démarrage ou le panneau Paramètres → Serveur d'email) — toujours prioritaire si elle existe.
- Variables d'environnement
SMTP_*— utilisées uniquement pour provisionner la base au tout premier démarrage du conteneur ; sans effet ensuite. - Intercepteur SMTP local (
127.0.0.1:1025, développement local uniquement) — utilisé en dernier recours si aucune des deux sources précédentes n'est disponible.
Et le mode « Envoi par API (HTTP) » ?
Cette cascade concerne le mode SMTP (le défaut). Lorsque le sélecteur Mode d'envoi est réglé sur Envoi par API (HTTP), les envois passent par l'API HTTPS du fournisseur choisi (Brevo, Mailjet, Scaleway, Sweego ou Resend) avec les identifiants enregistrés en base — voir la section dédiée.
Mot de passe chiffré
Le mot de passe SMTP est chiffré en base de données (AES-256-GCM) à l'aide de la variable ENCRYPTION_KEY. Cette clé n'a plus besoin d'être configurée manuellement : elle est générée automatiquement au premier démarrage si elle est absente, ce qui n'est donc plus un prérequis bloquant pour l'assistant de configuration. Voir Variables d'environnement pour la génération, la promotion en variable d'environnement recommandée en production, et la procédure de sauvegarde/restauration.
Quel fournisseur choisir ?
SMTP reste le chemin principal : il fonctionne sur la quasi-totalité des hébergements et ne demande rien de plus que le formulaire habituel.
- Aucune solution SMTP existante, petit volume : Gmail est le plus rapide à mettre en place (compte gratuit déjà possédé par la plupart des administrateurs associatifs).
- Aucune solution SMTP existante, volume plus soutenu ou meilleure délivrabilité recherchée : un relais SMTP européen dédié à l'emailing transactionnel, par exemple Brevo.
- Domaine et boîtes email déjà hébergés chez OVH : réutiliser directement ces identifiants évite un compte supplémentaire.
- Développement local : un intercepteur SMTP local (ex. Mailpit), sans configuration.
Envoi par API (HTTP) — uniquement si l'hébergeur bloque tout SMTP sortant (ports 25/465/587 filtrés, le cas de certains PaaS et de certaines offres gratuites) : le sous-menu propose cinq fournisseurs, présentés ci-dessous par cas d'usage, européens d'abord — voir la section dédiée et son tableau récapitulatif. Aucun n'est présélectionné ni mis en avant par défaut ; le choix dépend surtout du compte déjà existant ou du free tier le plus adapté à votre volume.
Gmail
Gmail permet d'utiliser un compte Google gratuit comme serveur d'envoi.
Prérequis : validation en deux étapes
Gmail exige la validation en deux étapes (2FA) sur le compte Google avant de pouvoir créer un mot de passe d'application. Depuis mai 2022, Google bloque les connexions SMTP par mot de passe de compte classique — seul un mot de passe d'application fonctionne.
Procédure
- Activer la validation en deux étapes sur myaccount.google.com → Sécurité → Validation en deux étapes.
- Générer un mot de passe d'application sur myaccount.google.com/apppasswords (ou Sécurité → Validation en deux étapes → Mots de passe des applications si le lien direct ne fonctionne pas). Nommer l'application « TimePick » et copier immédiatement le mot de passe de 16 caractères généré — il ne sera plus jamais affiché.
- Dans TimePick (assistant de premier démarrage ou Paramètres → Serveur d'email), renseigner :
| Champ | Valeur |
|---|---|
| Hôte SMTP | smtp.gmail.com |
| Port SMTP | 587 (STARTTLS) ou 465 (SSL/TLS direct) |
| Connexion sécurisée | Désactivée pour le port 587, activée pour le port 465 |
| Utilisateur SMTP | L'adresse Gmail complète |
| Mot de passe SMTP | Le mot de passe d'application à 16 caractères |
| Email expéditeur | L'adresse Gmail utilisée |
Les deux combinaisons de port sont sécurisées ; le port 587 est la recommandation la plus courante.
- Cliquer sur Tester la connexion, puis vérifier la réception de l'email de test (y compris le dossier spam).
Réécriture de l'expéditeur
Google réécrit automatiquement l'en-tête From: pour qu'il corresponde à l'adresse Gmail authentifiée, quelle que soit la valeur saisie dans « Email expéditeur ». C'est une mesure anti-usurpation imposée par Google, pas un dysfonctionnement de TimePick : les destinataires verront toujours l'adresse Gmail comme expéditeur.
Limite du compte Gmail gratuit
Instantané juillet 2026, d'après la documentation technique du projet : environ 500 emails par jour et 500 destinataires par email. Largement suffisant pour un usage associatif courant, mais à surveiller si les envois groupés (invitations à un grand événement) approchent ce volume.
Fiabilité de ces informations
Ces paramètres n'ont pas été revérifiés avec un compte Gmail réel lors de la dernière vérification de l'instance de référence (juillet 2026). Utiliser systématiquement le bouton Tester la connexion avant de considérer la configuration comme opérationnelle.
Brevo (relais SMTP)
Brevo (anciennement Sendinblue) est un service de relais SMTP dédié à l'emailing, avec une bonne réputation de délivrabilité. Il convient bien à une association qui n'a pas encore de solution d'envoi d'emails. Brevo est aussi disponible comme fournisseur HTTP du sous-menu « Envoi par API » — voir la section correspondante — les deux chemins utilisent le même compte Brevo mais des identifiants différents (clé SMTP ici, clé API là-bas).
- Créer un compte gratuit sur brevo.com.
- Dans le tableau de bord Brevo, aller dans SMTP & API, puis générer une clé SMTP.
- Dans TimePick, renseigner :
| Champ | Valeur |
|---|---|
| Hôte SMTP | smtp-relay.brevo.com |
| Port SMTP | 587 (STARTTLS) |
| Utilisateur SMTP | L'adresse email du compte Brevo |
| Mot de passe SMTP | La clé SMTP générée dans le dashboard — pas le mot de passe du compte Brevo |
À confirmer
Ces paramètres proviennent de la documentation de déploiement du projet et n'ont pas été testés avec un compte Brevo réel sur l'instance de référence (seul Mailpit a été vérifié de bout en bout). Avant de considérer cette configuration comme fiable, créer un compte Brevo et utiliser le bouton Tester la connexion dans TimePick pour valider l'envoi effectif d'un email.
Limite du plan gratuit
Instantané juillet 2026 : le plan gratuit Brevo permet environ 300 emails par jour. Vérifier les conditions à jour sur le site de Brevo, ces plans évoluant régulièrement.
OVH
OVH convient à une association qui possède déjà un nom de domaine et des boîtes email chez cet hébergeur : les identifiants SMTP sont alors ceux de la boîte email existante, sans compte supplémentaire à créer.
| Champ | Valeur |
|---|---|
| Hôte SMTP | ssl0.ovh.net |
| Port SMTP | 465 (SSL) |
| Utilisateur SMTP | L'adresse email complète (ex. contact@votre-domaine.tld) |
| Mot de passe SMTP | Le mot de passe de cette boîte email |
| Email expéditeur | La même adresse que l'utilisateur SMTP |
À confirmer
Ces paramètres proviennent de la documentation de déploiement du projet et n'ont pas été testés avec une boîte email OVH réelle sur l'instance de référence. Avant de considérer cette configuration comme fiable, utiliser le bouton Tester la connexion dans TimePick avec les identifiants d'une boîte email OVH existante.
Envoi par API (HTTP)
Le sélecteur Mode d'envoi — présent dans l'assistant de configuration initiale comme dans Paramètres → Serveur d'email — propose, à côté de SMTP (le défaut), une catégorie Envoi par API (HTTP) avec un sous-menu de cinq fournisseurs, dans cet ordre : Brevo, Mailjet, Scaleway, Sweego (🇪🇺 Union européenne) puis Resend (🇺🇸, conservé en dernier). Aucun n'est présélectionné ni recommandé par défaut — le formulaire d'identifiants change selon le fournisseur choisi (une clé API pour certains, une clé + un secret ou plus pour d'autres).
Quand l'utiliser ? Uniquement lorsque l'hébergeur bloque tout SMTP sortant (ports 25/465/587 — le cas de certains PaaS et de certaines offres gratuites). Partout ailleurs, SMTP reste le défaut et rien ne change : aucune installation existante n'est tenue de basculer.
Le catalogue vient du serveur
La liste des fournisseurs et le formulaire d'identifiants affichés par TimePick (GET /api/setup/email-providers et GET /api/admin/settings/email-providers) sont servis dynamiquement par le serveur, pas figés dans cette documentation. Cette fiche décrit l'état du catalogue au 2026-07-21 ; en cas d'écart avec l'interface, c'est l'interface qui fait foi.
Domaine expéditeur vérifié — obligatoire pour tout fournisseur HTTP
TimePick exige un email expéditeur (smtpFromEmail) pour tout fournisseur HTTP — pas de repli automatique sur une adresse par défaut. Ce domaine doit en plus être vérifié chez le fournisseur (enregistrements SPF/DKIM posés dans sa zone DNS) : sans cette vérification, les fournisseurs HTTP rejettent l'envoi ou le classent en spam, souvent sans erreur visible côté TimePick. Chaque section ci-dessous indique où poser cette vérification ; voir aussi Délivrabilité email.
Brevo — Envoi par API
Identifiant : une seule clé API (distincte de la clé SMTP utilisée par le relais SMTP Brevo).
- Créer un compte gratuit sur brevo.com (ou réutiliser un compte existant).
- Dashboard Brevo → SMTP & API → onglet Clés API → générer une clé (préfixe
xkeysib-…). Documentation officielle : developers.brevo.com/docs/api-key-authentication. - Vérifier le domaine d'expédition : dashboard Brevo → section expéditeurs/domaines → ajouter le domaine et poser les enregistrements SPF/DKIM affichés chez votre hébergeur DNS.
- Dans TimePick : Mode d'envoi → Envoi par API (HTTP) → Brevo ; coller la clé dans Clé API ; renseigner nom et email d'expéditeur (adresse du domaine vérifié).
| Champ | Valeur |
|---|---|
| Clé API | Générée dans SMTP & API → Clés API du dashboard Brevo |
Free tier (juillet 2026) : environ 300 emails/jour.
À confirmer
Le flux d'envoi API Brevo est vérifié contre la documentation officielle et une API mockée en local, mais pas encore exercé avec un compte Brevo réel. Utiliser systématiquement Tester la connexion avant de considérer la configuration comme fiable.
Mailjet
Identifiants : clé API + clé secrète (authentification Basic).
- Créer un compte gratuit sur mailjet.com.
- Dashboard Mailjet → Paramètres du compte → section clés API REST → récupérer la clé API et la clé secrète (affichée une seule fois à la génération). Documentation officielle : dev.mailjet.com/email/guides/getting-started.
- Vérifier le domaine d'expédition : dashboard Mailjet → section domaines expéditeurs / signature DKIM → ajouter le domaine et poser les enregistrements SPF/DKIM fournis.
- Dans TimePick : Mode d'envoi → Envoi par API (HTTP) → Mailjet ; renseigner Clé API et Clé secrète ; nom et email d'expéditeur (adresse du domaine vérifié).
| Champ | Valeur |
|---|---|
| Clé API | Section clés API REST du compte Mailjet |
| Clé secrète | Même section — affichée une seule fois |
Free tier (juillet 2026) : 6 000 emails/mois (≈ 200/jour).
À confirmer
Non testé avec un compte Mailjet réel sur l'instance de référence — utiliser Tester la connexion.
Scaleway
Identifiants : clé secrète + ID de projet + région.
- Créer un compte sur console.scaleway.com et un projet (ou réutiliser le projet par défaut) — noter son ID de projet, affiché en en-tête du projet dans la console.
- Activer Transactional Email dans la console.
- Générer une clé API secrète avec les droits nécessaires (console → Identity and Access Management (IAM) → Clés API). Documentation officielle : scaleway.com/.../generate-api-keys-for-tem-with-iam.
- Vérifier le domaine d'expédition : console Transactional Email → Domaines → ajouter le domaine et poser les enregistrements SPF/DKIM affichés.
- Dans TimePick : Mode d'envoi → Envoi par API (HTTP) → Scaleway ; renseigner Clé secrète, ID de projet, et Région ; nom et email d'expéditeur (adresse du domaine vérifié).
| Champ | Valeur |
|---|---|
| Clé secrète | Console Scaleway → IAM → Clés API |
| ID de projet | Console Scaleway → en-tête du projet |
| Région | fr-par (Paris) — seule région proposée |
Scaleway Transactional Email : Paris (fr-par) uniquement
Le sélecteur ne propose que la région fr-par. D'après la documentation officielle Scaleway au 2026-07-21, le produit Transactional Email n'est disponible qu'en région Paris — nl-ams et pl-waw existent pour d'autres produits Scaleway (calcul, stockage objet…), pas pour l'envoi d'emails transactionnels. Aucune autre région n'est donc documentée ici ; le sélecteur sera étendu si Scaleway ouvre le produit à d'autres régions.
Free tier (juillet 2026) : 300 emails/mois.
À confirmer
Non testé avec un compte Scaleway réel sur l'instance de référence — utiliser Tester la connexion.
Sweego
Identifiant : une seule clé API.
- Créer un compte sur sweego.io.
- Générer une clé API depuis le tableau de bord (section intégration email). Documentation officielle : sweego.io — intégrer l'API email.
- Vérifier le domaine d'expédition : suivre la procédure d'authentification de domaine du tableau de bord Sweego (SPF/DKIM).
- Dans TimePick : Mode d'envoi → Envoi par API (HTTP) → Sweego ; coller la clé dans Clé API ; nom et email d'expéditeur (adresse du domaine vérifié).
| Champ | Valeur |
|---|---|
| Clé API | Tableau de bord Sweego, section intégration |
Free tier (juillet 2026) : 100 emails/jour.
Sonde de vérification indisponible — statut « à confirmer »
Contrairement aux quatre autres fournisseurs, aucun endpoint de sonde d'authentification (« verify ») n'a été identifié dans la documentation publique de Sweego au 2026-07-21 : TimePick ne peut donc pas valider une clé Sweego par un simple appel API. Le bouton Tester la connexion envoie directement un email réel, et c'est le seul signal disponible. Le statut « Sweego » reste à confirmer tant qu'il n'a pas été exercé avec un compte réel.
Resend
Identifiant : une seule clé API. Dernier du sous-menu — fournisseur américain (🇺🇸), conservé pour compatibilité avec les installations existantes plutôt que mis en avant.
- Créer un compte sur resend.com et vérifier un domaine d'envoi — Resend affiche les enregistrements DNS (SPF, DKIM) à poser chez votre fournisseur DNS. Sans domaine vérifié, Resend ne délivre qu'à l'adresse email du compte : suffisant pour un essai, pas pour la production.
- Créer une clé API (
re_…) dans le dashboard Resend. - Dans TimePick : Mode d'envoi → Envoi par API (HTTP) → Resend ; coller la clé dans Clé API ; renseigner nom et email d'expéditeur (une adresse du domaine vérifié).
| Champ | Valeur |
|---|---|
| Clé API | Dashboard Resend, préfixe re_… |
Free tier (juillet 2026) : 3 000 emails/mois (≈ 100/jour).
Statut de vérification
L'intégration Resend a été vérifiée de bout en bout en local contre une réplique simulée de l'API Resend (liens de connexion reçus, bascule SMTP ↔ HTTP sans redémarrage, clé invalide détectée, envoi groupé sous limite de débit). Elle n'a pas encore été exercée avec un compte et une clé Resend réels. Avant de vous y fier en production : tester la connexion avec votre clé, puis confirmer la réception réelle d'un lien de connexion (déconnexion → reconnexion).
Comportement commun aux cinq fournisseurs HTTP
- Les champs secrets (clé API, clé secrète…) sont chiffrés en base avec
ENCRYPTION_KEY, exactement comme le mot de passe SMTP — mêmes précautions de sauvegarde et de migration (voir Variables d'environnement). Les champs non secrets (ID de projet, région Scaleway) sont stockés en clair. - Le badge d'état affiche « Opérationnel » (sans mention de marque). Pour les quatre fournisseurs qui exposent une sonde d'authentification (Brevo, Mailjet, Scaleway, Resend), il repose sur un appel API authentifié réel ; pour Sweego, faute de sonde connue (voir ci-dessus), il reflète seulement la présence d'identifiants complets, pas leur validité — seul un envoi de test réel le confirme. Une clé révoquée (quand une sonde existe) fait passer le badge à « Non joignable » et le healthcheck en
degraded. - Le transport absorbe les limites de débit propres à chaque fournisseur (concurrence bornée, rejeu automatique des réponses
429) — un envoi groupé d'invitations est délivré intégralement, sans configuration. - Pour provisionner un fournisseur HTTP dès le premier démarrage, sans passer par l'interface : variables
EMAIL_PROVIDER(id du fournisseur) etEMAIL_API_CREDENTIALS(JSON des identifiants) — voir Variables d'environnement. - La bascule SMTP ↔ HTTP est immédiate et réversible, sans redémarrage du serveur : les réglages SMTP restent enregistrés en base pendant qu'un fournisseur HTTP est actif, et réciproquement (les identifiants déjà enregistrés sont conservés lorsqu'un champ affiche
****). - Contrairement au test SMTP (qui teste les valeurs saisies dans le formulaire), le test d'un fournisseur HTTP accepte les champs masqués (
****) et valide alors les identifiants réellement stockés en base. Une clé invalide échoue explicitement (ex. « Clé API refusée (401) »).
Récapitulatif — fournisseurs HTTP
| Fournisseur | Région | Identifiants | Free tier (juillet 2026) | Statut de vérification |
|---|---|---|---|---|
| Brevo | 🇪🇺 | Clé API | ≈ 300 emails/jour | À confirmer — non testé avec un compte réel |
| Mailjet | 🇪🇺 | Clé API + clé secrète | 6 000 emails/mois (≈ 200/j) | À confirmer — non testé avec un compte réel |
| Scaleway | 🇪🇺 (fr-par uniquement) | Clé secrète + ID de projet + région | 300 emails/mois | À confirmer — non testé avec un compte réel |
| Sweego | 🇪🇺 | Clé API | 100 emails/jour | À confirmer — aucune sonde de vérification connue ; seul l'envoi de test fait foi |
| Resend | 🇺🇸 | Clé API | 3 000 emails/mois (≈ 100/j) | Testé contre une API simulée en local ; à confirmer avec une clé réelle |
Intercepteur SMTP local (développement uniquement)
En développement local, si aucun serveur SMTP n'est configuré, TimePick bascule automatiquement vers 127.0.0.1:1025, où tout intercepteur SMTP local peut écouter (Mailpit, MailCatcher, MailDev…). Les emails sont capturés au lieu d'être réellement délivrés, ce qui permet de tester le flux d'authentification sans dépendre d'un vrai fournisseur. Ce comportement a été vérifié de bout en bout avec Mailpit sur l'instance de référence.
Un intercepteur n'a aucune utilité en production. Voir Installation locale pour l'installation de Mailpit, l'outil utilisé sur l'instance de référence.
Dépannage courant
| Symptôme | Cause probable | Solution |
|---|---|---|
Invalid login / Authentication failed (Gmail) | Le mot de passe de compte Gmail habituel a été saisi | Utiliser exclusivement le mot de passe d'application à 16 caractères |
| L'option « Mots de passe des applications » n'apparaît pas sur Google | La validation en deux étapes n'est pas activée | Activer la validation en deux étapes avant de générer un mot de passe d'application |
Connection timeout | Le port SMTP (587 ou 465) est bloqué en sortie par l'hébergeur ou un pare-feu | Vérifier les règles de sortie réseau du serveur ou du VPS, ou basculer vers un fournisseur HTTP si le blocage est permanent |
| Email de test jamais reçu (mode SMTP) | Configuration SMTP incorrecte, ou email tombé en spam | Vérifier le dossier spam du destinataire ; consulter les journaux serveur pour une erreur SMTP explicite |
| Erreur d'authentification chez Brevo (relais SMTP) | La clé SMTP a été confondue avec le mot de passe du compte Brevo | Régénérer une clé SMTP dédiée dans SMTP & API du dashboard Brevo |
| Erreur d'authentification chez OVH | Mot de passe de la boîte email incorrect ou expiré | Vérifier le mot de passe depuis l'espace client OVH, en le réinitialisant si nécessaire |
| « Clé API refusée (401) » au test de connexion (mode Envoi par API) | Clé (ou jeu clé + secret) invalide, tronquée ou révoquée chez le fournisseur choisi | Régénérer les identifiants dans le dashboard du fournisseur concerné, les recoller dans le formulaire, puis re-tester — voir la section fournisseur correspondante |
| Email envoyé en mode HTTP mais jamais reçu, ou classé en spam | Domaine expéditeur non vérifié (SPF/DKIM absents) chez le fournisseur HTTP | Vérifier le domaine d'expédition dans le dashboard du fournisseur (voir la procédure par fournisseur ci-dessus) avant de considérer l'envoi comme fiable |
Alternatives pour la montée en charge
Au-delà des limites des offres gratuites ci-dessus :
- Les fournisseurs HTTP (Brevo, Mailjet, Scaleway, Sweego, Resend) proposent chacun des paliers payants au-delà de leur free tier — voir la section dédiée.
- Mailgun — service établi, tier gratuit limité et facturation à l'usage au-delà ; compatible via SMTP standard, sans qu'aucun de ses paramètres n'ait été testé sur l'instance de référence.
Récapitulatif — relais SMTP
Ce tableau couvre les fournisseurs SMTP classiques (identifiants hôte/port). Pour les cinq fournisseurs du mode Envoi par API (HTTP), voir le tableau dédié ci-dessus.
| Fournisseur | Hôte | Port | Sécurité | Limite indicative | Statut de vérification |
|---|---|---|---|---|---|
| Gmail | smtp.gmail.com | 587 ou 465 | STARTTLS (587) ou SSL (465) | ~500 emails/jour (juillet 2026) | Documentation projet dédiée, non revérifiée avec un compte réel |
| Brevo | smtp-relay.brevo.com | 587 | STARTTLS | ~300 emails/jour, plan gratuit (juillet 2026) | À confirmer — non testé sur l'instance de référence |
| OVH | ssl0.ovh.net | 465 | SSL | Dépend de l'offre d'hébergement | À confirmer — non testé sur l'instance de référence |
| Intercepteur local (ex. Mailpit) | 127.0.0.1 | 1025 | aucune (interception locale) | sans objet (développement uniquement) | Vérifié de bout en bout (Mailpit) sur l'instance de référence |
| Mailgun | — | — | — | — | Non documenté, non testé |