WEB и WordPress новости, темы, плагины. Здесь мы делимся советами и лучшими решениями для сайтов.

Отправка электронной почты с помощью Mailjet (альтернатива SMTP-серверу Gmail) на PHP

358

Владельцам веб-сайтов необходимо регулярно отправлять электронные письма нашим пользователям. Если вы используете функцию PHP mail() для отправки электронных писем, то вскоре вы поймете, что ваши электронные письма заканчиваются спамом, а не находятся в почтовом ящике пользователя. В результате большинство пользователей не замечают ваших важных писем. Чтобы решить эту проблему, вы должны использовать SMTP-серверы для отправки электронной почты.

SMTP-сервер Gmail – довольно популярный выбор среди разработчиков. Но есть 2 проблемы с использованием этого сервиса Google. Во-первых, вы не могли указать адрес отправителя при отправке электронного письма. Gmail установил ваш адрес электронной почты (идентификатор электронной почты Google) в качестве адреса отправителя. Во-вторых, вам нужно включить параметр «Разрешить менее безопасные приложения», который не рекомендуется Google.

Чтобы избежать этих ограничений, я нашел альтернативное решение для SMTP-сервера Gmail – Mailjet. Mailjet – это служба доставки электронной почты для команд маркетинга и разработчиков. Мы можем легко отправлять электронные письма с помощью Mailjet на PHP. Они предоставляют свой собственный API электронной почты для создания электронных писем. Вы также можете использовать их службу SMTP.

Начиная

Mailjet предоставляет квоту в 6000 бесплатных писем в месяц (200 писем в день). Для малого бизнеса этой бесплатной квоты достаточно. Если вашему бизнесу нужно больше писем, загляните на их страницу с ценами.

В процессе регистрации вам будет предложено выбрать способ отправки. В этом руководстве мы обсуждаем как API электронной почты, так и ретранслятор SMTP, поэтому сейчас выберите вариант API.

Отправка электронной почты с помощью Mailjet (альтернатива SMTP-серверу Gmail) на PHP

Следуйте следующим шагам. На экране ниже нажмите кнопку «Начать» в разделе для разработчиков.

Отправка электронной почты с помощью Mailjet (альтернатива SMTP-серверу Gmail) на PHP

Чтобы получить ключи API, перейдите в «Настройки учетной записи». На следующей странице в разделе REST API нажмите «Master API key & Sub API key management». Скопируйте ключ API и секретный ключ, которые потребуются на следующих шагах.

Отправка электронной почты с помощью Mailjet (альтернатива SMTP-серверу Gmail) на PHP

Mailjet позволяет нам установить адрес отправителя. В разделе «Отправители и домены» нажмите «Добавить домен или адреса отправителя» и на следующей странице добавьте адрес отправителя.

Отправка электронной почты с помощью Mailjet (альтернатива SMTP-серверу Gmail) на PHP

Если вы устанавливаете адрес, отличный от электронной почты вашей учетной записи, вы получите электронное письмо для проверки.

Отправка электронной почты с помощью 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.

Отправка электронной почты с помощью Mailjet (альтернатива SMTP-серверу Gmail) на PHP

Давайте посмотрим, как использовать учетные данные 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 вариантов пользователи могут выбрать любой из вариантов в зависимости от требований своего проекта.

Статьи по Теме

Источник записи: artisansweb.net

Этот веб-сайт использует файлы cookie для улучшения вашего опыта. Мы предполагаем, что вы согласны с этим, но вы можете отказаться, если хотите. Принимаю Подробнее