✉️ Email

SMTP transactionnel : envoyer depuis une app

Configurer l'envoi SMTP authentifié pour un site ou une application : WordPress, PHPMailer, ports, bonnes pratiques de délivrabilité.

intermédiaire ⏱ 10 min Mise à jour : 2026-04-23

Un mail transactionnel, c'est un message déclenché par une action utilisateur : inscription, réinitialisation de mot de passe, confirmation de commande, notification. Le volume est faible par destinataire mais le taux d'ouverture doit être proche de 100 %. C'est l'opposé du mail marketing (envoi de masse, opt-in, risque de plainte).

Quel outil pour quoi
  • Transactionnel — SMTP authentifié de votre domaine (Mailcow Datacampus), idéal.
  • Marketing / newsletter — plateforme dédiée (Brevo, Mailjet, Listmonk auto-hébergé). Séparer les flux protège votre réputation.

Paramètres SMTP à utiliser

Pour une boîte créée dans votre Mailcow Datacampus :

ParamètreValeur
Serveur SMTPmail.votredomaine.fr
Port + chiffrement (recommandé)587 avec STARTTLS
Port + chiffrement (alternatif)465 avec SSL/TLS implicite
AuthentificationActivée
Utilisateuradresse email complète (ex : noreply@votredomaine.fr)
Mot de passecelui défini pour la boîte dans Mailcow
⚠️
Port 25 : non
Le port 25 sert aux échanges entre serveurs, pas à l'envoi depuis une app. Il est bloqué en sortie sur la plupart des hébergements et chez de nombreux FAI. Utilisez 587 (ou 465).

Exemple : WordPress avec WP Mail SMTP

Par défaut, WordPress utilise la fonction mail() de PHP, qui passe par Sendmail local : délivrabilité médiocre, pas de DKIM. WP Mail SMTP route les envois via un vrai SMTP authentifié.

  1. Installer le plugin WP Mail SMTP depuis Extensions > Ajouter.
  2. Onglet Réglages :
    • De (email) : noreply@votredomaine.fr (doit correspondre à une boîte authentifiée).
    • De (nom) : le nom du site.
    • Mailer : Other SMTP.
    • SMTP Host : mail.votredomaine.fr.
    • Encryption : TLS (port 587) ou SSL (port 465).
    • Authentication : activé, user = adresse complète, password = mot de passe de la boîte.
  3. Sauvegarder puis onglet Email Test pour vérifier.

Stocker le mot de passe hors base

Pour ne pas exposer le mot de passe SMTP dans la base WordPress (risque en cas de fuite de dump SQL), déclarez-le dans wp-config.php :

define('WPMS_ON', true);
define('WPMS_SMTP_PASS', 'VotreMotDePasseSmtp');

Exemple : PHP avec PHPMailer

PHPMailer est la bibliothèque standard pour envoyer des mails en PHP. Installation via Composer :

composer require phpmailer/phpmailer

Script minimal

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require 'vendor/autoload.php';

$mail = new PHPMailer(true);

try {
    // Serveur
    $mail->isSMTP();
    $mail->Host       = 'mail.votredomaine.fr';
    $mail->SMTPAuth   = true;
    $mail->Username   = 'noreply@votredomaine.fr';
    $mail->Password   = getenv('SMTP_PASSWORD');
    $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
    $mail->Port       = 587;
    $mail->CharSet    = 'UTF-8';

    // Destinataires
    $mail->setFrom('noreply@votredomaine.fr', 'Mon Application');
    $mail->addReplyTo('support@votredomaine.fr', 'Support');
    $mail->addAddress('client@exemple.fr', 'Jean Client');

    // Contenu
    $mail->isHTML(true);
    $mail->Subject = 'Bienvenue !';
    $mail->Body    = '<p>Votre compte est créé.</p>';
    $mail->AltBody = 'Votre compte est créé.';

    $mail->send();
    echo 'Envoyé';
} catch (Exception $e) {
    echo "Erreur : {$mail->ErrorInfo}";
}
💡
Mot de passe dans l'environnement
Utilisez getenv() ou un fichier .env (hors versioning Git) plutôt que de coder le mot de passe en dur. Pour Plesk, l'onglet Variables d'environnement d'un domaine permet de définir SMTP_PASSWORD.

Bonnes pratiques délivrabilité

From = adresse authentifiée

L'en-tête From: doit utiliser une adresse de votre domaine authentifié par SPF/DKIM. Jamais From: contact@gmail.com depuis votre app — ça casse SPF, et Gmail rejettera (ou classera en spam) systématiquement.

Reply-To pour les réponses

Si vous envoyez depuis noreply@ mais voulez recevoir les réponses sur une adresse lue :

From:     noreply@votredomaine.fr
Reply-To: support@votredomaine.fr

DKIM automatique côté Mailcow

Tous les mails envoyés via votre SMTP Mailcow sont signés DKIM automatiquement — vous n'avez rien à faire côté code. À condition que SPF, DKIM et DMARC soient bien publiés (voir la doc SPF, DKIM, DMARC).

Version texte + HTML

Toujours fournir une version texte (AltBody dans PHPMailer). Rspamd et Gmail pénalisent les mails HTML-only. C'est aussi mieux pour l'accessibilité.

Limites de débit

Mailcow applique une limite de débit par boîte (configurée par Datacampus selon votre offre). Pour du transactionnel normal (quelques dizaines à quelques centaines de mails/jour par boîte), c'est transparent. Si vous prévoyez des pics (synchro, envoi batch), prévenez-nous en amont pour ajuster.

⚠️
Ne pas faire du marketing en SMTP transactionnel
Envoyer une newsletter à 5 000 contacts via votre SMTP d'app, c'est risquer : (1) que le débit soit plafonné, (2) que votre domaine soit noté négativement par les FAI, (3) que les mails transactionnels légitimes (reset password, etc.) finissent en spam par contamination. Séparez les flux.

Dépannage

  • « Could not authenticate » — mot de passe incorrect ou boîte désactivée. Testez les identifiants en vous connectant à https://mail.votredomaine.fr.
  • Timeout port 587 / 465 — firewall sortant de votre hébergement qui bloque. Chez Datacampus, ces ports sont ouverts par défaut.
  • Mail envoyé mais jamais reçu — consultez le journal des mails dans Mailcow. S'il n'y a pas de trace, le problème est côté app (vérifier que SMTP est bien appelé).
  • Mail reçu en spam — testez sur mail-tester.com. Souvent : SPF/DKIM/DMARC incomplets, ou contenu trop promotionnel.

Pour aller plus loin

Besoin d'aide ?

Cette documentation ne couvre pas votre cas ? Notre support humain est là.