Envoyer un e-mail à l’aide de Mailjet (alternative au serveur SMTP de Gmail) en PHP
Les propriétaires de sites Web doivent régulièrement envoyer des e-mails à nos utilisateurs. Si vous utilisez la fonction mail() de PHP pour envoyer des e-mails, vous réaliserez bientôt que vos e-mails se terminent dans le spam et non dans la boîte de réception de l’utilisateur. En conséquence, la plupart des utilisateurs ne remarquent pas vos e-mails importants. Pour résoudre ce problème, vous devez utiliser des serveurs SMTP pour envoyer vos e-mails.
Le serveur SMTP de Gmail est un choix très populaire parmi les développeurs. Mais il y a 2 problèmes d’utilisation de ce service Google. Premièrement, vous ne pouviez pas définir l’adresse « de » lors de l’envoi de l’e-mail. Gmail a défini votre adresse e-mail (identifiant de messagerie Google) comme adresse d’expéditeur. Deuxièmement, vous devez activer le paramètre "Autoriser les applications moins sécurisées", ce qui n’est pas recommandé par Google.
Pour éviter ces limitations, j’ai trouvé une solution alternative pour le serveur SMTP de Gmail qui est Mailjet. Mailjet est un service de livraison d’e-mails pour les équipes marketing et de développeurs. Nous pouvons facilement envoyer des e-mails en utilisant Mailjet en PHP. Ils fournissent leur propre API de messagerie pour envoyer des e-mails. Vous pouvez également utiliser leur service SMTP.
Commencer
Mailjet fournit un quota de 6000 emails gratuits par mois (200 emails par jour). Pour les petites entreprises, ce quota gratuit est suffisant. Si votre entreprise a besoin de plus d’e-mails, consultez leur page de tarification.
Au cours du processus d’inscription, il vous sera demandé de choisir la méthode d’envoi. Dans ce didacticiel, nous discutons à la fois de l’API de messagerie et du relais SMTP. Pour l’instant, choisissez l’option API.
Suivez les étapes suivantes. À partir de l’écran ci-dessous, cliquez sur le bouton "Commencer" dans la section développeur.
Pour récupérer vos clés API, allez dans « Paramètres du compte ». Sur la page suivante, sous la section API REST, cliquez sur « Gestion de la clé API principale et de la clé sous-API ». Copiez la clé API et la clé secrète qui sont requises dans les étapes suivantes.
Mailjet nous permet de définir l’adresse de l’expéditeur. Sous « Expéditeurs et domaines », cliquez sur « Ajouter un domaine ou des adresses d’expéditeur » et sur la page suivante, ajoutez une adresse d’expéditeur.
Si vous définissez une adresse autre que l’e-mail de votre compte, vous recevrez un e-mail de vérification.
Envoyer un e-mail à l’aide de Mailjet via cURL en PHP
Nous sommes prêts avec nos clés API et prêts à envoyer notre e-mail en utilisant Mailjet et cURL en PHP. Assurez-vous que cURL est activé sur votre serveur, sinon le code suivant ne fonctionnera pas comme prévu. Remplacez les espaces réservés par les valeurs réelles avant d’exécuter le code ci-dessous.
<?php
$body = [
'Messages' => [
[
'From' => [
'Email' => "SENDER_EMAIL_ADDRESS",
'Name' => "SENDER_NAME"
],
'To' => [
[
'Email' => "RECIPIENT_EMAIL_ADDRESS",
'Name' => "RECIPIENT_NAME"
]
],
'Subject' => "Greetings from Mailjet.",
'HTMLPart' => "<h3>Dear User, welcome to Mailjet!</h3><br />May the delivery force be with you!"
]
]
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.mailjet.com/v3.1/send");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($body));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json')
);
curl_setopt($ch, CURLOPT_USERPWD, "API_KEY:SECRET_KEY");
$server_output = curl_exec($ch);
curl_close ($ch);
$response = json_decode($server_output);
if ($response->Messages[0]->Status == 'success') {
echo "Email sent successfully.";
}
Envoyer un e-mail à l’aide de Mailjet via Guzzle en PHP
Vous pouvez utiliser Guzzle pour envoyer vos e-mails. Votre application s’exécute probablement sur un framework ou un CMS où vous utilisez un Composer pour gérer les bibliothèques. Dans ce cas, Guzzle serait une meilleure option que cURL.
Dans ce scénario, installez la bibliothèque Guzzle en exécutant la commande :
composer require guzzlehttp/guzzle
Après avoir installé la bibliothèque, en utilisant le code ci-dessous, vous pouvez envoyer des e-mails en utilisant Guzzle en PHP.
<?php
require_once "vendor/autoload.php";
use GuzzleHttpClient;
$body = [
'Messages' => [
[
'From' => [
'Email' => "SENDER_EMAIL_ADDRESS",
'Name' => "SENDER_NAME"
],
'To' => [
[
'Email' => "RECIPIENT_EMAIL_ADDRESS",
'Name' => "RECIPIENT_NAME"
]
],
'Subject' => "Greetings from Mailjet.",
'HTMLPart' => "<h3>Dear User, welcome to Mailjet!</h3><br />May the delivery force be with you!"
]
]
];
$client = new Client([
// Base URI is used with relative requests
'base_uri' => 'https://api.mailjet.com/v3.1/',
]);
$response = $client->request('POST', 'send', [
'json' => $body,
'auth' => ['API_KEY', 'SECRET_KEY']
]);
if($response->getStatusCode() == 200) {
$body = $response->getBody();
$response = json_decode($body);
if ($response->Messages[0]->Status == 'success') {
echo "Email sent successfully.";
}
}
Envoyer un e-mail à l’aide du serveur SMTP Mailjet et de PHPMailer
Dans les étapes ci-dessus, nous avons discuté de l’utilisation de l’API de messagerie Mailjet pour l’envoi d’e-mails. Dans cette section, je vous montre comment utiliser le serveur SMTP de Mailjet pour envoyer un email aux utilisateurs.
Depuis le tableau de bord, cliquez sur ‘Configurer mon SMTP’. Sur la page suivante, vous obtiendrez toutes les informations d’identification SMTP.
Voyons comment utiliser les identifiants SMTP en PHP et envoyer un e-mail. Dans un premier temps, installez la bibliothèque PHPMailer dans votre projet en exécutant la commande ci-dessous :
composer require phpmailer/phpmailer
Ensuite, écrivez le code ci-dessous dans votre fichier PHP qui enverra un e-mail via vos informations d’identification SMTP.
<?php
use PHPMailerPHPMailerPHPMailer;
use PHPMailerPHPMailerException;
require_once "vendor/autoload.php";
$mail = new PHPMailer(true);
try {
$mail->isSMTP();
$mail->Host = 'MAILJET_SMTP_SERVER'; // host
$mail->SMTPAuth = true;
$mail->Username = 'API_KEY'; //username
$mail->Password = 'SECRET_KEY'; //password
$mail->SMTPSecure = 'tls';
$mail->Port = 587; //smtp port
$mail->setFrom('SENDER_EMAIL_ADDRESS', 'SENDER_NAME');
$mail->addAddress('RECIPIENT_EMAIL_ADDRESS', 'RECIPIENT_NAME');
$mail->isHTML(true);
$mail->Subject = 'Email Subject';
$mail->Body = '<b>Email Body</b>';
$mail->send();
echo 'Email has been sent.';
} catch (Exception $e) {
echo 'Email could not be sent. Mailer Error: '. $mail->ErrorInfo;
}
Envoyer un e-mail à l’aide du serveur SMTP Mailjet et de Swift Mailer
Comme PHPMailer, Swift Mailer est également une bibliothèque populaire utile pour envoyer un e-mail à l’aide du serveur SMTP. Vous devez disposer de PHP version 7.0 ou supérieure pour envoyer des e-mails à l’aide de la bibliothèque Swift Mailer. Installez la bibliothèque Swift Mailer à l’aide de la commande :
composer require swiftmailer/swiftmailer
Lors de l’installation de la bibliothèque, en utilisant les informations d’identification du serveur SMTP Mailjet, vous pouvez envoyer l’e-mail via le code ci-dessous.
<?php
require_once 'vendor/autoload.php';
try {
// Create the Transport
$transport = (new Swift_SmtpTransport('MAILJET_SMTP_SERVER', 587, 'tls'))
->setUsername('API_KET')
->setPassword('SECRET_KEY')
;
// Create the Mailer using your created Transport
$mailer = new Swift_Mailer($transport);
// Create a message
$body = '<b>Email Body</b>';
$message = (new Swift_Message('Email Subject'))
->setFrom(['SENDER_EMAIL_ADDRESS' => 'SENDER_NAME'])
->setTo(['RECIPIENT_EMAIL_ADDRESS'])
->setBody($body)
->setContentType('text/html')
;
// Send the message
$mailer->send($message);
echo 'Email has been sent.';
} catch(Exception $e) {
echo $e->getMessage();
}
Remplacez les espaces réservés par les valeurs réelles et testez le code. Le destinataire doit avoir reçu l’e-mail.
Conclusion
Dans ce tutoriel, nous avons étudié l’API de messagerie et le relais SMTP de Mailjet. Nous avons discuté de l’envoi d’un e-mail via l’API de messagerie Mailjet en utilisant cURL et Guzzle. Mailjet fournit un serveur SMTP, nous avons donc écrit un code qui utilise le serveur SMTP Mailjet et envoie un e-mail aux utilisateurs. Ainsi, sur la base de ces 3 options, les utilisateurs peuvent choisir l’une des options en fonction des exigences de leur projet.
Articles Liés
- Envoyer un e-mail à l’aide du serveur SMTP de Gmail à partir d’un script PHP
- Comment envoyer un e-mail à l’aide du serveur SMTP de Gmail et de la bibliothèque Swift Mailer
- Envoi d’e-mails via le serveur SMTP de Gmail dans Laravel