Як відправляти листи за допомогою PHPMailer

Ви можете впровадити відправлення транзакційних листів з налаштуваннями SMTP від ​​SendPulse у ваш проєкт, використовуючи PHPMailer. PHPMailer сумісний з безліччю бібліотек PHP і дозволяє створити персоналізований email з вкладенням, щоб відправити його потрібним одержувачам.

У статті розглянемо, як встановити PHPMailer, де знайти параметри SMTP від ​​SendPulse і як налаштувати файл на відправлення листа.

Встановіть PHPMailer

Ви можете встановити PHPMailer через Composer або завантажити файл і встановити його у ваш проєкт.

Якщо ви використовуєте Composer, додайте наступний рядок у ваш "composer.json" файл:

"phpmailer/phpmailer": "^6.5"

Або запустіть наступну команду:

composer require phpmailer/phpmailer

Якщо ви не використовуєте Composer, завантажте файли PHPMailer і додайте додаткові класи:

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require 'path/to/PHPMailer/src/Exception.php';
require 'path/to/PHPMailer/src/PHPMailer.php';
require 'path/to/PHPMailer/src/SMTP.php';

Докладніше ознайомтеся з установкою та прикладом коду в офіційній документації PHPMailer.

Скопіюйте дані для авторизації у SMTP

Перейдіть до облікового запису SendPulse у вкладці «Установки SMTP» (SMTP Settings)> «Основні» (General). Скопіюйте значення для авторизації в SMTP: адресу сервера, порт, логін та пароль.

Ви можете використовувати налаштування SMTP після активації анкети, коли на сторінці зникне напис «Ваша анкета знаходиться на модерації» і ви отримаєте лист з проходженням модерації.

Налаштуйте об'єкт для використання SMTP

Якщо ви використовували Composer для встановлення, додайте autoload.php файл:

require 'path/to/composer/vendor/autoload.php';

Якщо ви встановлювали PHPMailer вручну, ініціалізуйте його так:

require path/to/PHPMailer/src/PHPMailer.php';
require path/to/PHPMailer/src/SMTP.php';
require path/to/PHPMailer/src/Exception.php';

Створіть клас PHPMailer:

<?php
use PHPMailer\PHPMailer\PHPMailer;

Створіть новий PHPMailer об'єкт:

$mail = новий PHPMailer(true);

Далі додайте параметри SMTP, дані про відправника та одержувачів, а також інформацію про вміст листа.

Додайте SMTP налаштування

У розділі «Налаштування сервера» (Server settings) вам потрібно вставити дані з ваших налаштувань SMTP у SendPulse.

//Server settings
    $mail->SMTPDebug = SMTP::DEBUG_SERVER;                      //Enable verbose debug output
    $mail->isSMTP();                                            //Send using SMTP
    $mail->Host = 'smtp-pulse.com';                     //Set the SMTP-server to send through
    $mail->SMTPAuth = true;                                   //Enable SMTP authentication
    $mail->Username = 'user@example.com';                     //SMTP username
    $mail->Password = 'secret';                               //SMTP password
    $mail->SMTPSecure = 'ssl';            //Enable implicit TLS encryption
    $mail->Port = 465;                                    // TCP port to connect to; use 587 if you have set `SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS`

Де:

Host Адреса сервера
SMTPAuth Вказується, чи залучена аутентифікація (у нашому випадку - так, використовується і потрібно вказати true)
Username Ваш логін email в SendPulse
Пароль Пароль вказаного вище акаунту
Password Тип шифрування (відповідає порту)
Port Порт, яким підключатиметеся. Можете вибрати 2525, 465 та 587

Додайте відправника та одержувача листа

У розділі «Відправники» (Recipients) вкажіть відправника та одержувачів.

//Recipients
    $mail->setFrom('from@example.com', 'Mailer');
    $mail->addAddress('joe@example.net', 'Joe User');     //Add a recipient
    $mail->addAddress('ellen@example.com');               //Name is optional
    $mail->addCC('cc@example.com');
    $mail->addBCC('bcc@example.com');

Де:

setFrom Email адресу та ім'я відправника.

Адреса відправника має бути підтверджена у вас у SMTP акаунті.

addAddress Email адреса та ім'я основного одержувача.

Ви можете надсилати стільки листів за годину, скільки передбачено вашим тарифним планом.

addCC Email адреса та ім'я вторинного одержувача в копії. Одержувач побачить інших отримувачів.
addBCC Email адреса та ім'я вторинного одержувача у прихованій копії. Одержувач не побачить інших отримувачів.

Додайте вміст листа

У розділі «Вміст» (Content) вкажіть параметри самого листа.

Для персоналізації листа у значенні параметра можна використовувати змінні з вашого проєкту.

//Content
    $mail->isHTML(true);                                  //Set email format to HTML
    $mail->Subject = 'Here is the subject';
    $mail->Encoding = 'base64';

    $mail->Body = 'This is the HTML message body <b>in bold!</b>';
    $mail->AltBody = 'Це є тіло в короткий текст для не-HTML mail clients';
   $mail->msgHTML(file_get_contents('contents.html'), __DIR__);

Де:

Subject Тема листа
Body Тіло листа в HTML
AltBody Текстова версія листа
Encoding Кодує вміст листа у вибраний формат даних. Може приймати значення base64 і quoted-printable.
msgHTML Конвертує лист з HTML на текстову версію

Також додатково ви можете прикріпити файли до листа. У параметрі addAttachment вкажіть шлях до файлу та ім'я файлу.

//Attachments
    $mail->addAttachment('/var/tmp/file.tar.gz');         //Add attachments
    $mail->addAttachment('/tmp/image.jpg', 'new.jpg');    //Optional name

Налаштуйте атрибути відправлення

Наприкінці документа вказується функція надсилання send. В echo ви можете вказати, яке повідомлення виводити при успішному відправленні або при отриманні помилки відправлення:

$ mail-> send ();
    echo 'Message has been sent';
} catch (Exception $e) {
    echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
}

Повний приклад файлу різної конфігурації ви можете в офіційній документації PHPMailer: Simple example та Example: SMTP.

Якщо у вас виникли труднощі з використанням, ви також можете звернутися до документа Troubleshooting PHPMailer Problems та переглянути Коди SMTP помилок.

Потім вам потрібно буде відповідно до налаштувань вашого проєкту запускати файл на кожну подію, щоб надіслати транзакційне повідомлення.

Оцініть, наскільки стаття була корисною "Як відправляти листи за допомогою PHPMailer"

Оцінка: 5 / 5

    Спробуйте сервіс SMTP SendPulse безкоштовно