Envoyer un e-mail à l’aide du serveur SMTP Gmail et de la bibliothèque Swift Mailer
Voulez-vous envoyer vos e-mails via le serveur SMTP de Gmail ? Lorsque vous utilisez le serveur SMTP pour vos e-mails, il y a de fortes chances que vos e-mails aillent dans la boîte de réception de l’utilisateur et non dans le spam. Le serveur SMTP empêche vos e-mails d’être marqués comme spam. Dans cet article, nous étudions comment envoyer des e-mails à l’aide du serveur SMTP de Gmail et de la bibliothèque Swift Mailer.
En tant que propriétaire de site, vous voulez toujours que votre e-mail aille directement dans la boîte de réception de l’utilisateur et non dans le spam ou le courrier indésirable. Cela augmente la probabilité que l’utilisateur lise votre e-mail et fasse l’action que vous souhaitez.
Pourquoi avoir besoin d’utiliser un serveur SMTP ?
Pour un site web, il est normal d’avoir un formulaire qui envoie un mail aux utilisateurs ou administrateurs. Il peut s’agir de votre newsletter, formulaire de contact ou processus d’inscription où vous devez envoyer un e-mail comme accusé de réception.
PHP fournit une mail()
fonction pour envoyer des e-mails. Cependant, si votre serveur ne configure pas correctement les paramètres de messagerie, cette méthode ne fonctionnera pas. Une autre possibilité est que lorsque vous envoyez des e-mails en utilisant la mail()
méthode, cela peut se retrouver dans le spam.
Pour pallier ces 2 situations, vous devez utiliser le serveur SMTP pour l’envoi de vos emails.
En utilisant la bibliothèque Swift Mailer, l’utilisateur peut utiliser n’importe quel serveur SMTP comme Gmail, Sendgrid, Mandrill ou votre propre serveur SMTP fourni par l’hébergement pour envoyer les e-mails. Dans ce tutoriel, je choisis un serveur SMTP Gmail.
Cela dit, voyons comment utiliser la bibliothèque Swift Mailer pour envoyer des e-mails.
Installation de courrier rapide
Pour utiliser la bibliothèque Swift Mailer, vous devez avoir PHP version 7.2 ou supérieure sur votre serveur. Si vous utilisez l’ancienne version, mettez-la à niveau vers la dernière version de PHP. La plupart des hébergeurs comme Bluehost mettent à niveau la version PHP sur demande. Vous n’avez pas besoin d’investir votre temps pour mettre à jour la version.
À l’avenir, je recommande d’utiliser Composer pour installer la bibliothèque Swift Mailer. Ouvrez le terminal dans le répertoire racine de votre projet et exécutez la commande :
composer require swiftmailer/swiftmailer
Comme nous allons utiliser Gmail SMTP, vous devez modifier certains paramètres de votre compte Google. Connectez-vous à votre compte Google et cliquez sur Compte. Une fois sur la page Compte Google, 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.
Envoyer un e-mail à l’aide du serveur SMTP Gmail et de la bibliothèque Swift Mailer
À ce stade, vous êtes prêt avec la bibliothèque Swift Mailer et vous avez également modifié les paramètres du compte Gmail. Maintenant, vous êtes prêt à aller de l’avant.
Disons que vous avez un fichier dans sendmail.php
lequel vous devez écrire un code qui envoie des e-mails. Écrivez le code ci-dessous dans votre fichier PHP.
envoyermail.php
<?php
require_once 'vendor/autoload.php';
try {
// Create the Transport
$transport = (new Swift_SmtpTransport('smtp.googlemail.com', 465, 'ssl'))
->setUsername('YOUR_GMAIL_USERNAME')
->setPassword('YOUR_GMAIL_PASSWORD')
;
// Create the Mailer using your created Transport
$mailer = new Swift_Mailer($transport);
// Create a message
$body = 'Hello, <p>Email sent through <span style="color:red;">Swift Mailer</span>.</p>';
$message = (new Swift_Message('Email Through Swift Mailer'))
->setFrom(['FROM_EMAIL_ADDRESS' => 'FROM_NAME'])
->setTo(['RECEPIENT_1_EMAIL_ADDRESS'])
->setCc(['RECEPIENT_2_EMAIL_ADDRESS'])
->setBcc(['RECEPIENT_3_EMAIL_ADDRESS'])
->setBody($body)
->setContentType('text/html')
;
// Send the message
$mailer->send($message);
echo 'Email has been sent.';
} catch(Exception $e) {
echo $e->getMessage();
}
Dans le code ci-dessus, j’ai transmis les valeurs ci-dessous pour les paramètres du serveur SMTP Gmail.
- Adresse du serveur SMTP de Google : smtp.googlemail.com
- Port SMTP de Gmail : 465
- Cryptage : ssl
En dehors de ces valeurs, vous devez modifier d’autres espaces réservés tels que YOUR_GMAIL_USERNAME, YOUR_GMAIL_PASSWORD, etc.
Après avoir remplacé toutes les valeurs, exécutez ce fichier sur un navigateur. Vous devriez recevoir l’e-mail dans la boîte de réception, pas dans le spam.
Envoyer des pièces jointes simples ou multiples dans un e-mail
Parfois, vous devrez peut-être envoyer des pièces jointes dans un e-mail. En utilisant Swift Mailer, vous pouvez envoyer une ou plusieurs pièces jointes comme suit :
$message->attach(Swift_Attachment::fromPath(__DIR__. '/sample.png')); //absolute path for your attachment
$message->attach(Swift_Attachment::fromPath(__DIR__. '/sample-ebook.pdf'));
Tout ce que vous avez à faire est d’utiliser la attach
méthode et de transmettre le chemin absolu du fichier que vous devez envoyer en pièce jointe. Ici, je suppose que vous devez envoyer ‘sample.png’ et ‘sample-ebook.pdf’ en pièces jointes.
Notre code final est donc le suivant.
envoyermail.php
<?php
require_once 'vendor/autoload.php';
try {
// Create the Transport
$transport = (new Swift_SmtpTransport('smtp.googlemail.com', 465, 'ssl'))
->setUsername('YOUR_GMAIL_USERNAME')
->setPassword('YOUR_GMAIL_PASSWORD')
;
// Create the Mailer using your created Transport
$mailer = new Swift_Mailer($transport);
// Create a message
$body = 'Hello, <p>Email sent through <span style="color:red;">Swift Mailer</span>.</p>';
$message = (new Swift_Message('Email Through Swift Mailer'))
->setFrom(['FROM_EMAIL_ADDRESS' => 'FROM_NAME'])
->setTo(['RECEPIENT_1_EMAIL_ADDRESS'])
->setCc(['RECEPIENT_2_EMAIL_ADDRESS'])
->setBcc(['RECEPIENT_3_EMAIL_ADDRESS'])
->setBody($body)
->setContentType('text/html')
->attach(Swift_Attachment::fromPath(__DIR__. '/sample.png'))
->attach(Swift_Attachment::fromPath(__DIR__. '/sample-ebook.pdf'))
;
// Send the message
$mailer->send($message);
echo 'Email has been sent.';
} catch(Exception $e) {
echo $e->getMessage();
}
Il s’agit d’envoyer des e-mails via la bibliothèque Swift Mailer. Vous pouvez également utiliser Symfony Swift Mailer pour envoyer des messages via quelques serveurs SMTP comme Mailgun, Mandrill, etc. J’aimerais entendre vos réflexions et suggestions dans la section commentaires ci-dessous.
Articles Liés
- Envoyer un e-mail à l’aide du serveur SMTP de Gmail à partir d’un script PHP
- Comment envoyer un e-mail WordPress à l’aide du serveur SMTP
- Envoi d’e-mails via le serveur SMTP de Gmail dans Laravel