...
✅ WEB і WordPress новини, теми, плагіни. Тут ми ділимося порадами і кращими рішеннями для сайтів.

Надіслати електронну пошту за допомогою Mailjet (альтернатива SMTP-серверу Gmail) у PHP

36

Власникам веб-сайтів регулярно потрібно надсилати електронні листи нашим користувачам. Якщо ви використовуєте функцію 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, клацніть на «Головний ключ API та управління ключами API API». Скопіюйте ключ 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-сервера. Для надсилання електронних листів за допомогою бібліотеки Swift Mailer ви повинні мати PHP версії 7.0 або новішої. Встановіть бібліотеку Swift Mailer за допомогою команди:

composer require swiftmailer/swiftmailer

Після встановлення бібліотеки, використовуючи облікові дані сервера Mailjet SMTP, ви можете надіслати електронне повідомлення за кодом нижче.

<?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, щоб покращити ваш досвід. Ми припустимо, що з цим все гаразд, але ви можете відмовитися, якщо захочете. Прийняти Читати далі