MMailer
Présentation
MMailer est une classe PHP qui permet d'envoyer des emails en format HTML avec la possibilité d'ajouter des pièces jointes.
La classe tente d'abord d'envoyer l'email via la fonction mail() de PHP, et en cas d'échec, elle utilise automatiquement le protocole SMTP pour utiliser un serveur d'envoi qui devra avoir été précisé.
Si l'envoi de mail a déjà été configuré sur le serveur, et que la fonction mail() de php est disponible, il n'y aura rien d'autre à faire qu'un appel à la methode MMailer::send(). Sinon il faudra configurer un serveur SMTP au préalable.
À l'inverse, même si un serveur SMTP est configuré, il sera ignoré si la fonction mail() de php fonctionne, à moins qu'on ait fait appel à la fonction MMailer::setForceSmtpMode(true).
Configuration de base
Exemple d'utilisation
use mlib\net\mail\MMailer;
use mlib\net\mail\MMailerException;
try {
// Envoi simple d'un email
MMailer::send(
'expediteur@exemple.com',
'destinataire@exemple.com',
'Sujet de l\'email',
'<h1>Contenu HTML</h1><p>Ceci est un email de test.</p>'
);
catch (MMailerException $e) {
echo "Erreur d'envoi d'email: " . $e->getMessage();
}
L'exemple ci-dessus ne peut fonctionner que si l'envoi de mail est configuré sur le serveur.
Configuration pour l'utilisation avec SMTP
use mlib\net\mail\MMailer;
// Configuration du serveur SMTP
MMailer::setSmtp(
'smtp.exemple.com', // Adresse du serveur SMTP
587, // Port (par défaut: 25)
'tls', // Mode sécurisé (null, 'tls' ou 'ssl')
'votre@email.com', // Identifiant SMTP (optionnel)
'votre_mot_de_passe', // Mot de passe SMTP (optionnel)
'LOGIN' // Type d'authentification (optionnel: 'PLAIN', 'LOGIN', 'CRAM-MD5', 'XOAUTH')
);
Cet appel doit être fait avant l'appel à
MMailer::send(), mais il peut n'être fait qu'une fois pour tout le script, sauf si on veut utiliser un serveur SMTP différent pour un envoi spécifique.Notez que cela n'est possible que si l'envoi de mail n'est pas configuré de manière globale dans le serveur.
Fonctionnalités avancées
Ajout de paramètres additionnels
use mlib\net\mail\MMailer;
$params = [
'Cc' => 'copie@exemple.com',
'Bcc' => 'copie_cachee@exemple.com',
'Reply-To' => 'reponse@exemple.com',
'Return-Path' => 'retour@exemple.com'
];
MMailer::send(
'expediteur@exemple.com',
'destinataire@exemple.com',
'Sujet avec copie',
'<p>Ce message a des destinataires en copie.</p>',
$params
);
Ajout de pièces jointes
use mlib\net\mail\MMailer;
// Une seule pièce jointe
MMailer::send(
'expediteur@exemple.com',
'destinataire@exemple.com',
'Email avec pièce jointe',
'<p>Veuillez trouver ci-joint le document.</p>',
null,
'/chemin/vers/document.pdf'
);
// Plusieurs pièces jointes
MMailer::send(
'expediteur@exemple.com',
'destinataire@exemple.com',
'Email avec plusieurs pièces jointes',
'<p>Veuillez trouver ci-joint les documents.</p>',
null,
[
'/chemin/vers/document1.pdf',
'/chemin/vers/image.jpg'
]
);
// Pièces jointes avec noms personnalisés
MMailer::send(
'expediteur@exemple.com',
'destinataire@exemple.com',
'Email avec pièces jointes personnalisées',
'<p>Veuillez trouver ci-joint les documents.</p>',
null,
[
'doc123.pdf' => '/chemin/vers/document1.pdf',
'photo.jpg' => '/chemin/vers/image.jpg'
]
);
Mode simulation
Le mode simulation permet de tester une application censée envoyer des mails sans que les mails ne soient envoyés. Utile en développement pour tester sans risquer d'envoyer des emails réels.
use mlib\net\mail\MMailer;
// Activer le mode simulation
MMailer::setSimulationMode(true);
// L'appel suivant retournera toujours true sans envoyer réellement l'email
MMailer::send(
'expediteur@exemple.com',
'destinataire@exemple.com',
'Email en mode simulation',
'<p>Ce message ne sera pas envoyé.</p>'
);