Envoyer un e-mail à l’aide du serveur SMTP de Gmail à partir d’un script PHP
Le courrier électronique joue un rôle important sur le site Web. Chaque site Web doit généralement envoyer des e-mails aux utilisateurs. Ces e-mails peuvent être envoyés depuis la page contactez-nous, la newsletter, le formulaire d’inscription, etc.
PHP fournit une mail()
fonction qui est utilisée pour envoyer un e-mail. Mais il y a des limitations lors de l’utilisation de la mail()
méthode. Vous ne pouvez pas envoyer de courrier électronique à partir d’un serveur de développement local. Un autre inconvénient est qu’il y a une forte possibilité que votre e-mail finisse dans un spam.
Dans la plupart des cas, mail()
method n’envoie même pas d’e-mail. Cela peut être dû à une mauvaise configuration du serveur ou à autre chose.
Pour sortir de ces problèmes ou limitations, on peut utiliser le serveur SMTP pour envoyer les e-mails.
Dans cet article, nous étudions comment utiliser PHPMailer et le serveur SMTP de Gmail pour envoyer des e-mails.
Installation
Vous devez d’abord installer la bibliothèque PHPMailer dans votre projet. La méthode recommandée pour installer une bibliothèque est via Composer.
Ouvrez l’invite de commande dans le répertoire racine de votre projet et exécutez la commande ci-dessous.
composer require phpmailer/phpmailer
Comme nous utilisons Gmail SMTP, vous devez modifier certains paramètres de votre compte Google. Connectez-vous à votre compte Google et cliquez sur Mon compte. Une fois sur la page Mon compte, cliquez sur Sécurité. Faites défiler vers le bas et vous trouverez les paramètres « Accès moins sécurisé aux applications ». Réglez-le sur ON.
Après cela, nous devons écrire un code qui envoie un e-mail à l’aide de la bibliothèque PHPMailer et du serveur SMTP Gmail.
Script PHP pour l’envoi d’e-mails à l’aide du serveur SMTP de Gmail
Ouvrez votre fichier PHP où vous devez écrire un code pour les e-mails. Par exemple, je suppose que vous avez un sendemail.php
fichier dans le répertoire racine.
envoyeremail.php
<?php
//Import PHPMailer classes into the global namespace
use PHPMailerPHPMailerPHPMailer;
use PHPMailerPHPMailerException;
require_once 'vendor/autoload.php';
$mail = new PHPMailer(true);
?>
Dans le code ci-dessus, j’ai inclus l’environnement de la bibliothèque PHPMailer dans le fichier PHP.
Ensuite, pour envoyer des e-mails à l’aide de PHPMailer, l’utilisateur doit transmettre l’adresse du serveur SMTP de Gmail, le port SMTP pour Gmail et l’authentification SMTP (qui n’est autre que votre nom d’utilisateur et votre mot de passe d’un compte Google).
$mail->isSMTP();
$mail->Host = 'smtp.googlemail.com'; //gmail SMTP server
$mail->SMTPAuth = true;
$mail->Username = 'GMAIL_USERNAME'; //username
$mail->Password = 'GMAIL_PASSWORD'; //password
$mail->SMTPSecure = 'ssl';
$mail->Port = 465; //SMTP port
C’est ça! Vous avez terminé la configuration. Maintenant, vous êtes prêt à envoyer un e-mail à un utilisateur.
$mail->setFrom('FROM_EMAIL_ADDRESS', 'FROM_NAME');
$mail->addAddress('RECEPIENT_EMAIL_ADDRESS', 'RECEPIENT_NAME');
$mail->isHTML(true);
$mail->Subject = 'Email subject';
$mail->Body = '<b>Email Body</b>';
$mail->send();
echo 'Message has been sent';
Remplacez les espaces réservés par des valeurs réelles. Exécutez ce fichier sur un navigateur et votre e-mail devrait être envoyé sur l’adresse e-mail du destinataire.
Envoi de pièces jointes dans un e-mail
En utilisant la bibliothèque PHPMailer, on peut envoyer une ou plusieurs pièces jointes dans un e-mail. Vous n’avez qu’à passer un chemin de répertoire de vos pièces jointes à la méthode addAttachment
comme suit.
$mail->addAttachment(__DIR__. '/attachment1.png');
$mail->addAttachment(__DIR__. '/attachment2.jpg');
Notre code final est le suivant.
envoyeremail.php
<?php
use PHPMailerPHPMailerPHPMailer;
use PHPMailerPHPMailerException;
require_once "vendor/autoload.php";
require_once "constants.php";
$mail = new PHPMailer(true);
try {
$mail->isSMTP();
$mail->Host = 'smtp.googlemail.com'; //gmail SMTP server
$mail->SMTPAuth = true;
$mail->Username = GMAIL_USERNAME; //username
$mail->Password = GMAIL_PASSWORD; //password
$mail->SMTPSecure = 'ssl';
$mail->Port = 465; //smtp port
$mail->setFrom('FROM_EMAIL_ADDRESS', 'FROM_NAME');
$mail->addAddress('RECEPIENT_EMAIL_ADDRESS', 'RECEPIENT_NAME');
$mail->addAttachment(__DIR__. '/attachment1.png');
$mail->addAttachment(__DIR__. '/attachment2.png');
$mail->isHTML(true);
$mail->Subject = 'Email Subject';
$mail->Body = '<b>Email Body</b>';
$mail->send();
echo 'Message has been sent';
} catch (Exception $e) {
echo 'Message could not be sent. Mailer Error: '. $mail->ErrorInfo;
}
?>
J’espère que vous comprenez comment envoyer des e-mails à l’aide du serveur SMTP de Gmail à partir d’un script PHP. Veuillez partager vos pensées et suggestions dans un commentaire ci-dessous.
Articles Liés
- Envoi d’e-mails via le serveur SMTP de Gmail dans Laravel
- Envoyer un e-mail à l’aide du serveur SMTP de Gmail et de la bibliothèque Swift Mailer
- Envoyer un e-mail avec Mailjet en PHP