Использование библиотеки PHPMailer для отправки сообщений по протоколу SMTP

Последнее изменение: Tuesday November 21st, 2023

Этот материал описывает, как отправлять сообщения через SMTP, используя библиотеку PHPMailer.

Введение

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

Когда ваше приложение требует отправки электронных писем, у вас есть два основных выбора:

  1. Использовать функцию mail() в PHP
  2. Использовать библиотеку SMTP

Преимущество использования функции mail() в PHP заключается в ее крайней простоте и удобстве использования. Тем не менее есть несколько недостатков, связанных с использованием функции mail():

  1. Поставщики электронной почты, основанные на платформе Microsoft, категоризируют сообщения, созданные с использованием функции mail() в PHP, как спам, потому что они не распознают заголовки DKIM, созданные функцией mail() в PHP.
  2. Функция mail() работает синхронно, требуя от приложения ожидания завершения транзакции SMTP перед выполнением других задач.

При использовании библиотеки SMTP, такой как PHPMailer, вы не столкнетесь с такими же ограничениями, хотя это требует немного больше настроек.

Процедура

Цель этого руководства – упростить установку библиотеки PHPMailer, сделав ее быстрой и простой.

Метод командной строки (рекомендуется)

ПРИМЕЧАНИЕ: Пожалуйста, замените “cpanelusername” именем пользователя вашего cPanel, а “domain.tld” – вашим доменным именем.

  1. Войдите через Терминал или SSH от имени пользователя cPanel
  2. Перейдите в подкаталог, где должен находиться сценарий:
    Bash:
    $ mkdir /home/cpanelusername/PHPMailerTest$ cd /home/cpanelusername/PHPMailerTest
  3. Клонируйте библиотеку PHPMailer с помощью команды git clone:
    $ git clone https://github.com/PHPMailer/PHPMailer
    Cloning into 'PHPMailer'...
    remote: Enumerating objects: 37, done.
    remote: Counting objects: 100% (37/37), done.
    remote: Compressing objects: 100% (26/26), done.
    remote: Total 6846 (delta 18), reused 25 (delta 11), pack-reused 6809
    Receiving objects: 100% (6846/6846), 4.79 MiB | 6.68 MiB/s, done.
    Resolving deltas: 100% (4438/4438), done.
  4. Ознакомьтесь с документацией здесь: Документация PHPMailer на Github
  5. Создайте сценарий, скопировав предоставленный в этом руководстве примерный сценарий в следующий файл:
    /home/cpanelusername/PHPMailerTest/testScript.php
  6. Обновите сценарий своими настройками.
  7. Протестируйте сценарий с помощью следующей команды:
    $ php /home/cpanelusername/PHPMailerTest/testScript.php

Метод Файлового Менеджера

Хотя метод командной строки предпочтителен, вы можете использовать этот метод, если ваш поставщик хостинга не предоставляет доступ к SSH или отсутствует значок Терминала.

ПРИМЕЧАНИЕ: Для этого метода необходимо размещение сценария в общедоступном месте сервера. Это может представлять собой риск безопасности и рекомендуется только в том случае, если файл защищен мерами, такими как функция Защиты Директории. Обычно этот метод используется на этапе тестирования. После завершения тестирования рекомендуется переместить сценарий почтовика в безопасное место и вызывать его из вашего приложения PHP. Если у вас есть сомнения относительно того, как вызвать сценарий из вашего приложения PHP, рекомендуем обратиться за помощью к разработчику PHP.

  1. Войдите в аккаунт cPanel от имени вашего пользователя.
  2. Настройте Защиту Директории для вашей папки “public_html“.
  3. В разделе “Файлы” найдите значок “Файловый Менеджер“.
  4. Нажмите на директорию “public_html“, чтобы открыть её.
  5. Скачайте библиотеку PHPMailer как zip-файл: PHPMailer на Github
  6. Загрузите zip-файл в Файловый Менеджер с помощью кнопки “Загрузить” в горизонтальном меню вверху.
  7. Используйте кнопку “Извлечь” в горизонтальном меню Файлового Менеджера, чтобы извлечь библиотеку PHPMailer.
  8. Создайте новый файл PHP с именем “test.php” в директории “public_html” с содержанием примерного сценария ниже.
  9. Обновите сценарий своими настройками.
  10. Протестируйте сценарий, посетив URL-адрес файла: https://domain.tld/test.php

Примерный сценарий

Техническая поддержка не предоставляет помощи по реализации, отладке или обслуживанию сценария в этом руководстве. Если у вас возникли ошибки с вашим сценарием, обратитесь к нашей странице по отладке PHPMailer, если вы видите ошибку “SMTP Error: Could not authenticate.” для получения дополнительной помощи.
Предоставленный примерный сценарий является отличным отправным пунктом, предназначенным для беспроблемной работы с PHPMailer 6.1.2. В этом сценарии используются обязательные операторы для включения трех основных файлов PHP, которые необходимы для функционирования PHPMailer в самом базовом режиме.

Этот сценарий настроен на создание подробного отладочного вывода по умолчанию. Сценарий требует изменений, чтобы работать в вашей конкретной среде. Вам нужно обновить следующее:

  • Пути к PHP-файлам в обязательных операторах
  • $mail->Host – Используйте имя хоста вашего сервера cPanel. В некоторых случаях можно использовать ваше доменное имя.
  • $mail->Username – Используйте адрес электронной почты действующего учетного записи на вашем сервере cPanel.
  • $mail->Password – Используйте пароль для действующей учетной записи электронной почты на вашем сервере cPanel.
  • $mail->setFrom – Используйте тот же адрес, что и в конфигурации Username.
  • $mail->addAddress – Установите адрес получателя.
  • $mail->addReplyTo – Установите тот же адрес, что и в конфигурации Username.
  • $mail->addCC – Удалите это или установите адрес для копии.
  • $mail->addBCC – Удалите это или установите адрес для скрытой копии.
  • $mail->addAttachment – Удалите это или обновите путь к файлу, который нужно прикрепить.
  • $mail->Subject – Обновите тему по вашему желанию.
  • $mail->Body – Обновите содержимое HTML по вашему желанию. Это не обязательно должно быть HTML, но может содержать HTML.
  • $mail->AltBody – Обновите это до простого текстового варианта вашего содержимого/сообщения.
Код:
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require '/home/cpanelusername/PHPMailerTest/PHPMailer/src/Exception.php';
require '/home/cpanelusername/PHPMailerTest/PHPMailer/src/PHPMailer.php';
require '/home/cpanelusername/PHPMailerTest/PHPMailer/src/SMTP.php';

// Instantiation and passing [ICODE]true[/ICODE] enables exceptions
$mail = new PHPMailer(true);

try {
 //Server settings
 $mail->SMTPDebug = 2; // Включить подробный отладочный вывод
 $mail->isSMTP(); // Установить почтовик для использования SMTP
 $mail->Host = 'smtp1.example.com;smtp2.example.com'; // Указать основной и резервный SMTP-серверы
 $mail->SMTPAuth = true; // Включить аутентификацию SMTP
 $mail->Username = 'user@example.com'; // Имя пользователя SMTP
 $mail->Password = 'secret'; // Пароль SMTP
 $mail->SMTPSecure = 'tls'; // Включить шифрование TLS, также принимается [ICODE]ssl[/ICODE]
 $mail->Port = 587; // TCP-порт для подключения

// Получатели
 $mail->setFrom('from@example.com', 'Mailer');
 $mail->addAddress('recipient1@example.net', 'Joe User'); // Добавить получателя
 $mail->addAddress('recipient2@example.com'); // Имя не обязательно
 $mail->addReplyTo('info@example.com', 'Information');
 $mail->addCC('cc@example.com');
 $mail->addBCC('bcc@example.com');

// Вложения
 $mail->addAttachment('/home/cpanelusername/attachment.txt'); // Добавить вложения
 $mail->addAttachment('/home/cpanelusername/image.jpg', 'new.jpg'); // Необязательное имя

// Содержание
 $mail->isHTML(true); // Установить формат электронной почты в HTML
 $mail->Subject = 'Here is the subject';
 $mail->Body = 'This is the HTML message body <b>in bold!</b>';
 $mail->AltBody = 'This is the body in plain text for non-HTML mail clients';

$mail->send();
 echo 'Message has been sent';

} catch (Exception $e) {
 echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
}
Was this article helpful?
Просмотры: 264

10 лет с BeeHosting!
Отмечаем скидками до 70% на все услуги
+ бесплатная миграция сайта.

Beehosting.pro сайт использует файлы «куки»

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

Меню