Отправка электронной почты с помощью Mailjet (альтернатива SMTP-серверу Gmail) на PHP
Владельцам веб-сайтов необходимо регулярно отправлять электронные письма нашим пользователям. Если вы используете функцию PHP mail() для отправки электронных писем, то вскоре вы поймете, что ваши электронные письма заканчиваются спамом, а не находятся в почтовом ящике пользователя. В результате большинство пользователей не замечают ваших важных писем. Чтобы решить эту проблему, вы должны использовать SMTP-серверы для отправки электронной почты.
SMTP-сервер Gmail – довольно популярный выбор среди разработчиков. Но есть 2 проблемы с использованием этого сервиса Google. Во-первых, вы не могли указать адрес отправителя при отправке электронного письма. Gmail установил ваш адрес электронной почты (идентификатор электронной почты Google) в качестве адреса отправителя. Во-вторых, вам нужно включить параметр «Разрешить менее безопасные приложения», который не рекомендуется Google.
Чтобы избежать этих ограничений, я нашел альтернативное решение для SMTP-сервера Gmail – Mailjet. Mailjet – это служба доставки электронной почты для команд маркетинга и разработчиков. Мы можем легко отправлять электронные письма с помощью Mailjet на PHP. Они предоставляют свой собственный API электронной почты для создания электронных писем. Вы также можете использовать их службу SMTP.
Начиная
Mailjet предоставляет квоту в 6000 бесплатных писем в месяц (200 писем в день). Для малого бизнеса этой бесплатной квоты достаточно. Если вашему бизнесу нужно больше писем, загляните на их страницу с ценами.
В процессе регистрации вам будет предложено выбрать способ отправки. В этом руководстве мы обсуждаем как API электронной почты, так и ретранслятор SMTP, поэтому сейчас выберите вариант API.
Следуйте следующим шагам. На экране ниже нажмите кнопку «Начать» в разделе для разработчиков.
Чтобы получить ключи API, перейдите в «Настройки учетной записи». На следующей странице в разделе REST API нажмите «Master API key & Sub API key management». Скопируйте ключ API и секретный ключ, которые потребуются на следующих шагах.
Mailjet позволяет нам установить адрес отправителя. В разделе «Отправители и домены» нажмите «Добавить домен или адреса отправителя» и на следующей странице добавьте адрес отправителя.
Если вы устанавливаете адрес, отличный от электронной почты вашей учетной записи, вы получите электронное письмо для проверки.
Отправка электронной почты с помощью Mailjet через cURL в PHP
У нас есть ключи API, и мы готовы отправить электронное письмо с помощью Mailjet и cURL на PHP. Убедитесь, что на вашем сервере включен cURL, иначе следующий код не будет работать должным образом. Перед запуском приведенного ниже кода замените заполнители фактическими значениями.
<?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.";
}
Отправка электронной почты с помощью Mailjet через Guzzle на PHP
Вы можете использовать Guzzle для отправки писем. Вероятно, ваше приложение работает на платформе или CMS, где вы используете Composer для управления библиотеками. В этом случае Guzzle будет лучшим вариантом по сравнению с cURL.
В этом сценарии установите библиотеку Guzzle, выполнив команду:
composer require guzzlehttp/guzzle
После установки библиотеки, используя приведенный ниже код, вы можете отправлять электронные письма с помощью Guzzle на 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.";
}
}
Отправка электронной почты с помощью SMTP-сервера Mailjet и PHPMailer
В приведенных выше шагах мы обсудили использование API электронной почты Mailjet для отправки электронных писем. В этом разделе я покажу вам, как использовать SMTP-сервер Mailjet для отправки электронной почты пользователям.
На панели управления нажмите «Настроить мой SMTP». На следующей странице вы получите все учетные данные SMTP.
Давайте посмотрим, как использовать учетные данные SMTP в PHP и отправить электронное письмо. Сначала установите библиотеку PHPMailer в свой проект, выполнив следующую команду:
composer require phpmailer/phpmailer
Затем напишите приведенный ниже код в свой файл PHP, который отправит электронное письмо с вашими учетными данными 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;
}
Отправка электронной почты с помощью SMTP-сервера Mailjet и Swift Mailer
Как и PHPMailer, Swift Mailer также является популярной библиотекой, полезной для отправки электронной почты с помощью SMTP-сервера. У вас должен быть PHP версии 7.0 или выше, чтобы отправлять электронные письма с помощью библиотеки Swift Mailer. Установите библиотеку Swift Mailer с помощью команды:
composer require swiftmailer/swiftmailer
После установки библиотеки, используя учетные данные SMTP-сервера Mailjet, вы можете отправить электронное письмо с помощью приведенного ниже кода.
<?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();
}
Замените заполнители фактическими значениями и проверьте код. Получатель должен был получить электронное письмо.
Заключение
В этом руководстве мы изучили API электронной почты Mailjet и ретранслятор SMTP. Мы обсудили отправку электронного письма через API электронной почты Mailjet с использованием cURL и Guzzle. Mailjet предоставляет SMTP-сервер, поэтому мы написали код, который использует SMTP-сервер Mailjet и отправляет электронное письмо пользователям. Итак, на основе этих 3 вариантов пользователи могут выбрать любой из вариантов в зависимости от требований своего проекта.
Статьи по Теме
- Отправка электронной почты с помощью SMTP-сервера Gmail из PHP-скрипта
- Как отправить электронную почту с помощью SMTP-сервера Gmail и библиотеки Swift Mailer
- Отправка электронной почты через SMTP-сервер Gmail в Laravel