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).
- 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ètre | Valeur |
|---|---|
| Serveur SMTP | mail.votredomaine.fr |
| Port + chiffrement (recommandé) | 587 avec STARTTLS |
| Port + chiffrement (alternatif) | 465 avec SSL/TLS implicite |
| Authentification | Activée |
| Utilisateur | adresse email complète (ex : noreply@votredomaine.fr) |
| Mot de passe | celui défini pour la boîte dans Mailcow |
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é.
- Installer le plugin WP Mail SMTP depuis Extensions > Ajouter.
- 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.
- De (email) :
- 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}";
}
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.
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.