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

Последнее изменение: Thursday June 19th, 2025
Этот материал описывает, как отправлять сообщения через 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 = 'moc.e1750652220lpmax1750652220e@res1750652220u1750652220'; // Имя пользователя SMTP $mail->Password = 'secret'; // Пароль SMTP $mail->SMTPSecure = 'tls'; // Включить шифрование TLS, также принимается [ICODE]ssl[/ICODE] $mail->Port = 587; // TCP-порт для подключения // Получатели $mail->setFrom('moc.e1750652220lpmax1750652220e@mor1750652220f1750652220', 'Mailer'); $mail->addAddress('ten.e1750652220lpmax1750652220e@1tn1750652220eipic1750652220er1750652220', 'Joe User'); // Добавить получателя $mail->addAddress('moc.e1750652220lpmax1750652220e@2tn1750652220eipic1750652220er1750652220'); // Имя не обязательно $mail->addReplyTo('moc.e1750652220lpmax1750652220e@ofn1750652220i1750652220', 'Information'); $mail->addCC('moc.e1750652220lpmax1750652220e@cc1750652220'); $mail->addBCC('moc.e1750652220lpmax1750652220e@ccb1750652220'); // Вложения $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?
Просмотры: 810

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

Facebook Instagram linkedin
Меню