|
|
| (6 versions intermédiaires par le même utilisateur non affichées) |
| Ligne 1 : |
Ligne 1 : |
| | | #REDIRECT [[Envoi d'email authentifié via PHP ou Perl]] |
| 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 [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.
| |
| | |
| '''Difficulté : Moyenne'''
| |
| | |
| <h1>Installation de PHPMailer</h1>
| |
| | |
| 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 :
| |
| | |
| 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.
| |
| | |
| <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 :
| |
| | |
| | |
| <syntaxhighlight lang="php">
| |
| $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
| |
| </syntaxhighlight>
| |
| | |
| 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->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
| |
| </syntaxhighlight>
| |
| | |
| On effectue ensuite l'envoi avec cette condition :
| |
| | |
| <syntaxhighlight lang="php">
| |
| if(!$mail->send()) {
| |
| echo 'Le message ne peut être envoyé.';
| |
| echo 'Erreur: ' . $mail->ErrorInfo;
| |
| } else {
| |
| echo 'Message envoyé';
| |
| }
| |
| </syntaxhighlight>
| |
| | |
| 2) Le script type à copier dans un nouveau fichier, et à intégrer au formulaire existant :
| |
| | |
| <syntaxhighlight lang="php">
| |
| <?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://');
| |
| }
| |
| //==========
| |
| | |
| ?>
| |
| </syntaxhighlight>
| |
| | |
| 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
| |