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... »)
 
Balise : Nouvelle redirection
 
(7 révisions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
 
+
#REDIRECT [[Envoi d'email authentifié via PHP ou Perl]]
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 <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
 
// 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 :<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
 

Version actuelle datée du 19 décembre 2018 à 15:24