PHPMailer

De
Révision datée du 7 septembre 2018 à 15:06 par Root xo1zfe7e (discussion | contributions) (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... »)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Sauter à la navigation Sauter à la recherche

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 PHPMailer.

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 : 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.

1) Compréhension et utilisation de PHPMailer :

Il faudra ensuite que votre script d'envoi SMTP face appel à ces fonctions avec les 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.

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 en gras!'; // 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 // Téléchanger les fichiers suivants : // 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 :

Auteur : ".$nom_auteur."
Mail : ".$email_auteur."
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é.
'; echo 'Vous allez être redirigé vers la page d\'accueil du site.
'; 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