← Blog

Comment Envoyer des E-mails en Ruby, Python, Node.js et Go avec Mailer To Go

Guide SMTP, API, Ruby, Python, Node.js, Go July 9, 2026 by Équipe Mailer To Go
Comment envoyer des emails transactionnels via Mailer To Go en SMTP, avec des exemples de code fonctionnels en Ruby, Python, Node.js et Go — plus des conseils de production et un aperçu de l'API REST en développement.

La façon d’envoyer des emails transactionnels via Mailer To Go aujourd’hui est SMTP : pointez le mailer intégré de votre framework vers notre endpoint de soumission et vous envoyez en minutes, depuis n’importe quel langage. Ce guide contient des exemples fonctionnels en Ruby, Python, Node.js et Go. (Une API REST JSON est en développement — voir la note à la fin.)

Tout ce qui suit est le plan de données — l’envoi réel de mail. Le plan de contrôle (événements de livraison/rebond, réception entrante et approvisionnement) est une surface distincte avec son propre guide qui arrivera plus tard.

Récupérez vos identifiants

Depuis votre tableau de bord, récupérez votre nom d’utilisateur et mot de passe SMTP, et définissez-les comme variables d’environnement. Sur Heroku et Build.io, ceux-ci sont définis automatiquement comme variables de configuration lorsque vous approvisionnez le module complémentaire.

export MAILERTOGO_SMTP_HOST=smtp.mailertogo.com   # l'hôte exact est affiché dans votre tableau de bord
export MAILERTOGO_SMTP_USER=...                    # depuis le tableau de bord
export MAILERTOGO_SMTP_PASSWORD=...                # depuis le tableau de bord

Envoyez depuis une adresse sur un domaine que vous avez vérifié (voir configuration du domaine et authentification) ; Mailer To Go rejette les domaines From: non vérifiés.

Envoyez par SMTP

Hôte SMTP depuis votre tableau de bord, port 587 (STARTTLS) ou 465 (SSL). Parce que c’est du SMTP standard, le mailer intégré de votre langage le comprend déjà.

Ruby (la gem mail) :

require "mail"

Mail.defaults do
  delivery_method :smtp,
    address:              ENV["MAILERTOGO_SMTP_HOST"], port: 587,
    user_name:            ENV["MAILERTOGO_SMTP_USER"],
    password:             ENV["MAILERTOGO_SMTP_PASSWORD"],
    authentication:       :plain, enable_starttls_auto: true
end

Mail.deliver do
  from    "Acme <hello@yourdomain.com>"
  to      "user@example.com"
  subject "Hello from Ruby"
  body    "Your email body here."
end

Python (stdlib smtplib) :

import os, smtplib
from email.message import EmailMessage

msg = EmailMessage()
msg["From"] = "Acme <hello@yourdomain.com>"
msg["To"] = "user@example.com"
msg["Subject"] = "Hello from Python"
msg.set_content("Your email body here.")

with smtplib.SMTP(os.environ["MAILERTOGO_SMTP_HOST"], 587) as s:
    s.starttls()
    s.login(os.environ["MAILERTOGO_SMTP_USER"], os.environ["MAILERTOGO_SMTP_PASSWORD"])
    s.send_message(msg)

Node.js (Nodemailer) :

const nodemailer = require("nodemailer");

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

await transport.sendMail({
  from: "Acme <hello@yourdomain.com>",
  to: "user@example.com",
  subject: "Hello from Node",
  text: "Your email body here.",
});

Go (stdlib net/smtp) :

package main

import (
	"net/smtp"
	"os"
)

func main() {
	host := os.Getenv("MAILERTOGO_SMTP_HOST")
	auth := smtp.PlainAuth("", os.Getenv("MAILERTOGO_SMTP_USER"), os.Getenv("MAILERTOGO_SMTP_PASSWORD"), host)
	msg := []byte("To: user@example.com\r\n" +
		"From: Acme <hello@yourdomain.com>\r\n" +
		"Subject: Hello from Go\r\n\r\n" +
		"Your email body here.\r\n")
	if err := smtp.SendMail(host+":587", auth, "hello@yourdomain.com", []string{"user@example.com"}, msg); err != nil {
		panic(err)
	}
}

Envoyez du HTML à la place du texte brut ? Définissez la partie HTML du message (html_part dans la gem Ruby mail, add_alternative(..., subtype="html") en Python, le champ html dans Nodemailer, ou un en-tête Content-Type: text/html en Go) — tout le reste reste identique.

Conseils de production

Une API REST est en développement

Pour les équipes qui préfèrent faire un appel HTTP plutôt que de maintenir une connexion SMTP, une API d’envoi JSON est en préparation. La forme prévue :

POST https://api.mailertogo.com/api/v1/emails
Authorization: Bearer <your API key>
Content-Type: application/json

{
  "from": "hello@yourdomain.com",
  "to": "user@example.com",          // ou un tableau, jusqu'à 50 destinataires
  "subject": "Hello",
  "html": "...", "text": "...",       // fournissez l'un ou l'autre ou les deux
  "reply_to": "support@yourdomain.com",
  "tags": [ { "name": "campaign", "value": "welcome" } ]
}

Elle retournera l’id du message en file d’attente. Cet endpoint n’est pas encore actif — envoyez par SMTP aujourd’hui, et nous mettrons à jour cet article lorsque l’API REST sera déployée. (L’API du plan de contrôle plus large — événements, réception entrante, approvisionnement — est suivi séparément.)


Déploiement sur une plateforme spécifique ? Voir Envoyer des emails transactionnels depuis Heroku. Migration d’un autre fournisseur ? Voir les guides pour SendGrid, Mailgun et Amazon SES.