PHPMailer

La fonction mail() en php permet l’envoie de mail uniquement s’il existe un serveur mail configuré. Avec PHPMailer il est possible d’envoyer des mails sans devoir configurer de serveur mail en utilisant un autre serveur SMTP tel que celui de Google, Free, Orange par exemple (et bien sur le vôtre si vous en possédez un).

Prés requis

  • Ouvrir le port 25 sur le firewall
  • Avoir un compte de messagerie qui permette l’utilisation de leur SMTP (Gmail, Free, Orange, ….)
  • Avoir un serveur web avec votre site internet configuré
  • Avoir Git installé

Télécharger l’archive

Allez dans le répertoire où se trouve votre page qui contiendra le formulaire :

# git clone https://github.com/Synchro/PHPMailer.git

Vous devriez avoir cette arborescence :

# ls -l
total 156
-rw-r--r-- 1 Mikasa Ackerman 1017 107859 avril 12 2018 index.htm
-rw-r--r-- 1 Mikasa Ackerman Mikasa Ackerman 2103 avril 10 14:53 simpleSendMail.php
drwxr-xr-x 10 Mikasa Ackerman Mikasa Ackerman 4096 avril 10 14:04 PHPMailer

Le code dans la page simpleSendMail.php ne fait qu’envoyer un mail en utilisant le SMTP de Google. Pour cela il faut avoir un compte et préciser les identifiants :

<?php

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

$mail = new PHPMailer(true); // Passing `true` enables exceptions

try {
//Server settings
$mail->SMTPDebug = 2; // Enable verbose debug output
$mail->isSMTP(); // Set mailer to use SMTP
$mail->Host = 'smtp.gmail.com'; // Specify main and backup SMTP servers
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = '[email protected]'; // SMTP username
$mail->Password = 'Mot2P4ss'; // SMTP password
$mail->SMTPSecure = 'tls'; // Enable TLS encryption, `ssl` also accepted
$mail->Port = 587; // TCP port to connect to

//Recipients
$mail->setFrom('[email protected]', 'Mailer');
$mail->addAddress('[email protected]', 'Eren Jäger'); // Add a recipient
$mail->addAddress('[email protected]'); // Name is optional
$mail->addReplyTo('@example.com', 'Information');
$mail->addCC('[email protected]');
$mail->addBCC('[email protected]');

//Attachments
//$mail->addAttachment('/var/tmp/file.tar.gz'); // Add attachments
//$mail->addAttachment('/tmp/image.jpg', 'new.jpg'); // Optional name

//Content
$mail->isHTML(true); // Set email format to HTML
$mail->Subject = 'Here is the subject';
$mail->Body = 'This is the HTML message body <b>in bold!</b>';
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';

$mail->send();
echo 'Message has been sent';

} catch (Exception $e) {
echo 'Message could not be sent.';
echo 'Mailer Error: ' . $mail->ErrorInfo;
}
?>

Vérifier que vos fournisseurs n’aient pas bloqué l’accès au SMTP, c’est très souvent le cas avec Google qui croira à une activité suspecte. Il vous faudra l’autoriser via :

Les autres relais SMPT de google : https://support.google.com/a/answer/176600?hl=fr

Nom de domaine complet du service SMTP :

smtp-relay.gmail.com	smtp.gmail.com	aspmx.l.google.com

Options de configuration :

Options : port 25, 465 ou 587
Protocoles SSL/TLS (Secure Socket Layer/Transport Layer Security)

Les adresses IP dynamiques sont autorisées, mais une adresse IP statique peut être demandée en raison des conditions requises pour l’authentification.

Port 465 (SSL requis).
Port 587 (TLS requis).
Adresses IP dynamiques autorisées.

Port 25.
TLS non requis.
Adresses IP dynamiques autorisées.

Les messages ne peuvent être envoyés qu’aux utilisateurs Gmail ou G Suite.

Documentation

https://github.com/Synchro/PHPMailer
https://myaccount.google.com/lesssecureapps
https://accounts.google.com/b/0/DisplayUnlockCaptcha
https://support.google.com/a/answer/176600?hl=fr

> Partager <