← Blog

Comment envoyer des e-mails transactionnels depuis Heroku (avec Mailer To Go)

Guide Heroku, SMTP, Délivrabilité, Email Transactionnel July 9, 2026 by Équipe Mailer To Go
Envoyer un email transactionnel inbox-landing à partir d'une application Heroku : provisionner le module complémentaire Mailer To Go, vérifier votre sous-domaine d'envoi, configurer Rails ou Node, et gérer les pièges spécifiques à Heroku (variables de configuration, applications de révision, tâches en arrière-plan, port 25).

Un dyno Heroku est un excellent endroit pour exécuter votre application et un terrible endroit pour exécuter un serveur de messagerie. Le système de fichiers est éphémère, les IPs des dynos sont partagées et tournent, et le port 25 sortant est pratiquement inutilisable — donc tout courrier que vous essayez d’envoyer directement depuis un dyno atterrit dans les spams, s’il part du tout. La solution est de confier l’envoi à un service de messagerie. Mailer To Go est un add-on Heroku qui s’approvisionne en secondes et s’intègre à votre application, vous permettant d’envoyer via une connexion authentifiée et gérée en matière de réputation sur le port 587.

Ce guide vous fait passer de zéro à un e-mail envoyé et atterrissant dans la boîte de réception sur Heroku, et couvre les pièges spécifiques à Heroku (variables de config, applications de révision, tâches de fond) qui posent problème.

Étape 1 — Approvisionner l’add-on

Depuis la CLI :

heroku addons:create mailertogo --app your-app

Ou ajoutez-le depuis la Place de marché Heroku Elements. De toute façon, l’approvisionnement définit automatiquement ces variables de config sur votre application — pas de copier-coller d’identifiants :

heroku config --app your-app | grep MAILERTOGO
# MAILERTOGO_SMTP_HOST:      smtp.mailertogo.com
# MAILERTOGO_SMTP_USER:      ...
# MAILERTOGO_SMTP_PASSWORD:  ...
# MAILERTOGO_API_KEY:        ...

Pour le déclarer comme dépendance afin que chaque déploiement et application de révision l’obtienne, ajoutez-le à app.json :

{
  "addons": ["mailertogo"]
}

Étape 2 — Vérifier votre domaine d’envoi

Ajoutez un sous-domaine d’envoimtg.yourdomain.com — dans le tableau de bord Mailer To Go et publiez les enregistrements SPF et DKIM qu’il vous montre (plus une politique DMARC à votre racine). Un sous-domaine garde la réputation d’envoi de votre application séparée de votre domaine racine, et c’est exactement ce qui fait que le courrier d’une plateforme éphémère comme Heroku atterrit de manière fiable. Voir Pourquoi Mailer To Go envoie depuis mtg.yourdomain.com et le guide de configuration SPF/DKIM/DMARC.

Étape 3 — Pointer votre application vers les variables de config

Votre application a déjà les identifiants en tant que variables d’environnement — référencez-les simplement.

Rails :

# config/environments/production.rb
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
  address:         ENV["MAILERTOGO_SMTP_HOST"],   # smtp.mailertogo.com
  port:            587,
  user_name:       ENV["MAILERTOGO_SMTP_USER"],
  password:        ENV["MAILERTOGO_SMTP_PASSWORD"],
  authentication:  :plain,
  enable_starttls: true
}

Node.js (Nodemailer) :

const transport = require("nodemailer").createTransport({
  host: process.env.MAILERTOGO_SMTP_HOST,
  port: 587,
  auth: { user: process.env.MAILERTOGO_SMTP_USER, pass: process.env.MAILERTOGO_SMTP_PASSWORD },
});

Préférez HTTP à SMTP, ou sur un autre langage ? Utilisez l’API REST à la place — des exemples complets dans Envoyer un e-mail avec l’API Mailer To Go et SMTP.

Étape 4 — Déployer et envoyer un test

git push heroku main
heroku run rails runner 'ActionMailer::Base.mail(from: "hello@mtg.yourdomain.com", to: "you@example.com", subject: "Hello from Heroku", body: "It works.").deliver_now' --app your-app
heroku logs --tail --app your-app   # watch the send

Ouvrez le message dans Gmail → Afficher l’original et confirmez que SPF, DKIM et DMARC disent tous PASS.

Pièges spécifiques à Heroku

Pourquoi cela fonctionne alors que l’envoi depuis le dyno ne fonctionne pas

La délivrabilité est un jeu de réputation joué par l’IP d’envoi et le domaine. Un dyno Heroku n’a ni une IP stable ni une réputation réchauffée, et ne peut pas publier les enregistrements d’authentification que les fournisseurs de boîtes de réception exigent. Mailer To Go fournit les IPs gérées, la signature DKIM et la rotation des clés, l’alignement SPF/DMARC et la gestion des rebonds/plaintes — donc votre dyno fait ce pour quoi il est bon (exécuter votre application) tandis que votre e-mail roule sur une infrastructure construite pour être délivré.


Vous déployez via Addons.io ou Build.io à la place ? La configuration est identique — voir Utiliser Mailer To Go sur Heroku, Addons.io et Build.io. Vous travaillez avec les sous-domaines Heroku en général ? Voir Sous-domaines Heroku : un guide d’introduction.