PHPMailer : Différence entre versions

De
Sauter à la navigation Sauter à la recherche
(Page créée avec « INTRO Afin de mettre en place un envoi d'email via SMTP sur un site ne disposant pas de plugin dédié (comme Easy WP SMTP pour Wordpress par exemple), on peut utiliser... »)
 
Ligne 1 : Ligne 1 :
  
INTRO
+
Chez HaiSoft, comme la plupart des hébergeurs luttant contre l'envoi de spams, la fonction d'envoi de mails non sécurisée PHP mail() est désactivée.
  
Afin de mettre en place un envoi d'email via SMTP sur un site ne disposant pas de plugin dédié (comme Easy WP SMTP pour Wordpress par exemple), on peut utiliser PHPMailer.
+
Il faut donc envoyer ses emails en [https://wiki.haisoft.fr/index.php?title=E-mail#Envois_de_mails_depuis_un_site SMTP avec authentification].
 +
Afin de mettre en place un envoi d'email via SMTP sur un site ne disposant pas de plugin dédié (comme Easy WP SMTP pour Wordpress par exemple), on peut utiliser [https://github.com/PHPMailer/PHPMailer PHPMailer]. De nombreux modules d'envoi PHP comme Easy WP SMTP sont bases sur PHPMailer car son fonctionnement est simple et efficace.
  
 
Nous expliquons ici comment le mettre en place, et fournissons un script prêt à l'emploi, à modifier uniquement pour adapter à votre configuration SMTP.
 
Nous expliquons ici comment le mettre en place, et fournissons un script prêt à l'emploi, à modifier uniquement pour adapter à votre configuration SMTP.
  
Dans votre hébergement, il faudra télécharger ces trois fichiers :
+
'''Difficulté : Moyenne'''
https://raw.githubusercontent.com/PHPMailer/PHPMailer/master/src/Exception.php
 
https://raw.githubusercontent.com/PHPMailer/PHPMailer/master/src/PHPMailer.php
 
https://raw.githubusercontent.com/PHPMailer/PHPMailer/master/src/SMTP.php
 
  
Si vous souhaitez utiliser notre script type, passez directement au point 2.
+
<h1>Installation de PHPMailer</h1>
  
1) Compréhension et utilisation de PHPMailer :
+
Dans votre hébergement, il faudra télécharger ces trois fichiers de PHPMailer et les placer à la racine de l'hébergement (dans "httpdocs") dans un dossier appelé "PHPMailer" :
 +
<ul>
 +
<li>https://raw.githubusercontent.com/PHPMailer/PHPMailer/master/src/Exception.php
 +
<li>https://raw.githubusercontent.com/PHPMailer/PHPMailer/master/src/PHPMailer.php
 +
<li>https://raw.githubusercontent.com/PHPMailer/PHPMailer/master/src/SMTP.php
 +
</ul>
 +
 
 +
<h1>Fonctionnement de PHPMailer</h1>
 +
 
 +
''Si vous souhaitez utiliser notre script type, passez directement au point suivant "Intégration de PHPMailer".''
 +
 
 +
<h2>Appel de PHPMailer</h2>
 +
 
 +
Votre script d'envoi SMTP devra faire appel à PHPMailer grâce aux lignes suivantes :
  
Il faudra ensuite que votre script d'envoi SMTP face appel à ces fonctions avec les lignes suivantes :
 
 
         use PHPMailer\PHPMailer\PHPMailer;
 
         use PHPMailer\PHPMailer\PHPMailer;
 
         use PHPMailer\PHPMailer\Exception;
 
         use PHPMailer\PHPMailer\Exception;
Ligne 24 : Ligne 34 :
 
Si vous avez placé les fichiers précédents dans un dossier différent, il faudra donc adapter le chemin vers ces fichiers.
 
Si vous avez placé les fichiers précédents dans un dossier différent, il faudra donc adapter le chemin vers ces fichiers.
  
 +
<h2>Configuration de l'envoi PHPMailer</h2>
 
Ensuite, les paramètres suivants sont nécessaires pour définir les options d'envoi et de connexion SMTP :
 
Ensuite, les paramètres suivants sont nécessaires pour définir les options d'envoi et de connexion SMTP :
 +
 +
 +
<syntaxhighlight lang="php">
 
$mail = new PHPMailer;
 
$mail = new PHPMailer;
 
$mail->CharSet = 'UTF-8';
 
$mail->CharSet = 'UTF-8';
Ligne 36 : Ligne 50 :
 
$mail->SMTPSecure = "ssl"; // Utiliser SSL
 
$mail->SMTPSecure = "ssl"; // Utiliser SSL
 
$mail->isHTML(true); // Format de l'email en HTML
 
$mail->isHTML(true); // Format de l'email en HTML
 +
</syntaxhighlight>
  
 
Voici ensuite les paramètres liés au mail :
 
Voici ensuite les paramètres liés au mail :
  
 +
<syntaxhighlight lang="php">
 
$mail->From = 'from@example.com'; // L'adresse mail de l'emetteur du mail (en général identique à l'adresse utilisée pour l'authentification SMTP)
 
$mail->From = 'from@example.com'; // L'adresse mail de l'emetteur du mail (en général identique à l'adresse utilisée pour l'authentification SMTP)
 
$mail->FromName = 'Mon Site'; // Le nom de l'emetteur qui s'affichera dans le mail
 
$mail->FromName = 'Mon Site'; // Le nom de l'emetteur qui s'affichera dans le mail
Ligne 51 : Ligne 67 :
 
$mail->Body    = 'Contenu du message en HTML <b>en gras!</b>'; // Le contenu du mail en HTML
 
$mail->Body    = 'Contenu du message en HTML <b>en gras!</b>'; // Le contenu du mail en HTML
 
$mail->AltBody = 'Contenu du message pour les clients non HTML'; // Le contenu du mail au format texte
 
$mail->AltBody = 'Contenu du message pour les clients non HTML'; // Le contenu du mail au format texte
 +
</syntaxhighlight>
  
 
On effectue ensuite l'envoi avec cette condition :
 
On effectue ensuite l'envoi avec cette condition :
 +
 +
<syntaxhighlight lang="php">
 
if(!$mail->send()) {
 
if(!$mail->send()) {
 
     echo 'Le message ne peut être envoyé.';
 
     echo 'Le message ne peut être envoyé.';
Ligne 59 : Ligne 78 :
 
     echo 'Message envoyé';
 
     echo 'Message envoyé';
 
}
 
}
 +
</syntaxhighlight>
  
 
2) Le script type à copier dans un nouveau fichier, et à intégrer au formulaire existant :
 
2) Le script type à copier dans un nouveau fichier, et à intégrer au formulaire existant :
  
 +
<syntaxhighlight lang="php">
 
<?php
 
<?php
// Téléchanger les fichiers suivants :
+
// Fichiers requis :
 
// https://raw.githubusercontent.com/PHPMailer/PHPMailer/master/src/Exception.php
 
// https://raw.githubusercontent.com/PHPMailer/PHPMailer/master/src/Exception.php
 
// https://raw.githubusercontent.com/PHPMailer/PHPMailer/master/src/PHPMailer.php
 
// https://raw.githubusercontent.com/PHPMailer/PHPMailer/master/src/PHPMailer.php
Ligne 131 : Ligne 152 :
  
 
?>
 
?>
 +
</syntaxhighlight>
  
 
Ici, seules les 8 premières variables doivent être configurées :
 
Ici, seules les 8 premières variables doivent être configurées :

Version du 7 septembre 2018 à 15:36

Chez HaiSoft, comme la plupart des hébergeurs luttant contre l'envoi de spams, la fonction d'envoi de mails non sécurisée PHP mail() est désactivée.

Il faut donc envoyer ses emails en SMTP avec authentification. Afin de mettre en place un envoi d'email via SMTP sur un site ne disposant pas de plugin dédié (comme Easy WP SMTP pour Wordpress par exemple), on peut utiliser PHPMailer. De nombreux modules d'envoi PHP comme Easy WP SMTP sont bases sur PHPMailer car son fonctionnement est simple et efficace.

Nous expliquons ici comment le mettre en place, et fournissons un script prêt à l'emploi, à modifier uniquement pour adapter à votre configuration SMTP.

Difficulté : Moyenne

Installation de PHPMailer

Dans votre hébergement, il faudra télécharger ces trois fichiers de PHPMailer et les placer à la racine de l'hébergement (dans "httpdocs") dans un dossier appelé "PHPMailer" :

Fonctionnement de PHPMailer

Si vous souhaitez utiliser notre script type, passez directement au point suivant "Intégration de PHPMailer".

Appel de PHPMailer

Votre script d'envoi SMTP devra faire appel à PHPMailer grâce aux lignes suivantes :

       use PHPMailer\PHPMailer\PHPMailer;
       use PHPMailer\PHPMailer\Exception;
       require 'Exception.php';
       require 'PHPMailer.php';
       require 'SMTP.php';

Si vous avez placé les fichiers précédents dans un dossier différent, il faudra donc adapter le chemin vers ces fichiers.

Configuration de l'envoi PHPMailer

Ensuite, les paramètres suivants sont nécessaires pour définir les options d'envoi et de connexion SMTP :


$mail = new PHPMailer;
$mail->CharSet = 'UTF-8';

$mail->isSMTP();						// Active l'envoi via SMTP
$mail->Host = 'srvXX.haisoft.net';		// À remplacer par le nom de votre serveur SMTP
$mail->SMTPAuth = true;					// Active l'authentification par SMTP
$mail->Username = 'user@example.com';	// Nom d'utilisateur SMTP (votre adresse email complète)
$mail->Password = 'secret';				// Mot de passe de l'adresse email indiquée précédemment
$mail->Port = 465;						// Port SMTP
$mail->SMTPSecure = "ssl";				// Utiliser SSL
$mail->isHTML(true);					// Format de l'email en HTML

Voici ensuite les paramètres liés au mail :

$mail->From = 'from@example.com';		// L'adresse mail de l'emetteur du mail (en général identique à l'adresse utilisée pour l'authentification SMTP)
$mail->FromName = 'Mon Site';			// Le nom de l'emetteur qui s'affichera dans le mail
$mail->addAddress('joe@example.net');	// Un premier destinataire
$mail->addAddress('ellen@example.com');	// Un second destifataire (facultatif)
										// Possibilité de répliquer la ligne pour plus de destinataires
$mail->addReplyTo('info@example.com');	// Pour ajouter l'adresse à laquelle répondre (en général celle de la personne ayant rempli le formulaire)
$mail->addCC('cc@example.com');			// Pour ajouter un champ Cc
$mail->addBCC('bcc@example.com');		// Pour ajouter un champ Cci

$mail->Subject = 'Sujet du mail';									// Le sujet de l'email
$mail->Body    = 'Contenu du message en HTML <b>en gras!</b>';		// Le contenu du mail en HTML
$mail->AltBody = 'Contenu du message pour les clients non HTML';	// Le contenu du mail au format texte

On effectue ensuite l'envoi avec cette condition :

if(!$mail->send()) {
    echo 'Le message ne peut être envoyé.';
    echo 'Erreur: ' . $mail->ErrorInfo;
} else {
    echo 'Message envoyé';
}

2) Le script type à copier dans un nouveau fichier, et à intégrer au formulaire existant :

<?php
// Fichiers requis :
// https://raw.githubusercontent.com/PHPMailer/PHPMailer/master/src/Exception.php
// https://raw.githubusercontent.com/PHPMailer/PHPMailer/master/src/PHPMailer.php
// https://raw.githubusercontent.com/PHPMailer/PHPMailer/master/src/SMTP.php

//=====Configuration des paramètres d'expédition
    //=====Utilisateur SMTP (Adresse email complète existante sur le serveur)
    $username = "Adresse existante sur le serveur";
    //=====Mot de passe de l'adresse
    $password = "";
    //=====Nom du serveur sur lequel vos emails sont hébergés
    $smtphost = "srvXX.haisoft.net";

//=====Paramètres de contenu du mail
    //=====Adresse de destination du message (vous-meme pour un formulaire de contact).
    $to = "Adresse sur le serveur ou externe";
    //=====Définition du sujet de l'email.
    $subject = "Nouveau message sur votre site";
    //=====Définition des variables à récupérer depuis votre formulaire
    $email_auteur = $_POST['VARIABLE1'];
    $nom_auteur = $_POST['VARIABLE2'];
    $message = $_POST['VARIABLE3'];
    //=====Déclaration des messages au format texte
    $body = "Un nouveau message vous a été envoyé sur votre site :<br /><br />
                Auteur : ".$nom_auteur."<br />
                Mail : ".$email_auteur."<br />
                Contenu : ".$message;
    //==========

//=====Fonction d'envoi du mail - Rien à configurer ici
        use PHPMailer\PHPMailer\PHPMailer;
        use PHPMailer\PHPMailer\Exception;
        require 'Exception.php';
        require 'PHPMailer.php';
        require 'SMTP.php';

        $email = new PHPMailer;
        $email->CharSet = 'UTF-8';

        $email->isSMTP();
        $email->Host = $smtphost;
        $email->SMTPAuth = true;
        $email->Username = $username;
        $email->Password = $password;
        $email->Port = 25;
        $email->isHTML(true);

        $email->From = $username;
        $email->FromName = $nom_auteur;
        $email->addAddress($to);
        $email->addReplyTo($email_auteur, $nom_auteur);

        $email->Subject = $subject;
        $email->Body    = $body;
        $email->AltBody = $body;

//=====Envoi de l'e-mail.
        if(!$email->send()) {
            echo 'Le message ne peut être envoyé.';
            echo 'Erreur: ' . $email->ErrorInfo;
        } else {
            echo 'Merci, votre message a bien été envoyé.<br />';
            echo 'Vous allez être redirigé vers la page d\'accueil du site.<br />';
            header('Refresh: 5; URL=http://');
        }
//==========

?>

Ici, seules les 8 premières variables doivent être configurées : - L'adresse email expéditrice - Le mot de passe - Le nom de serveur

- L'adresse du destinataire - Le sujet - L'email de l'auteur (configuré pour être récupéré depuis le formulaire via POST : Il faudra juste adapter le nom de la variable à celle de votre formulaire) - Le nom de l'auteur (même instruction) - Le message (même instruction)

Votre formulaire d'origine doit donc indiquer le nom de ce script dans le paramètre "action=".

Merci