Как использовать PHPMailer в WordPress для отправки писем с примерами кода

PHPMailer — это мощная библиотека для отправки email, которая встроена в ядро WordPress и используется для рассылки писем, уведомлений и других сообщений. Несмотря на то, что WordPress предоставляет стандартные функции для отправки почты, иногда требуется более тонкая настройка или расширенный контроль над процессом отправки. В этой статье мы подробно разберём, как использовать PHPMailer в WordPress, как настроить параметры SMTP и приведём примеры кода для решения реальных задач.

Что такое PHPMailer и зачем он нужен в WordPress

PHPMailer — это библиотека PHP, которая значительно упрощает отправку email с поддержкой SMTP, HTML-сообщений, вложений и прочих возможностей, которые недоступны в базовой функции mail(). WordPress использует PHPMailer под капотом, предоставляя функцию wp_mail(), но иногда её возможностей недостаточно для тонкой настройки или исправления проблем с отправкой почты.

Например, многие пользователи сталкиваются с ситуацией, когда письма из WordPress попадают в спам или вовсе не доходят. В таких случаях удобнее работать напрямую с PHPMailer, настраивая SMTP-сервер, добавляя заголовки и параметры.

Основные возможности PHPMailer в WordPress

  • Отправка писем через SMTP с авторизацией и шифрованием
  • Поддержка HTML и текстового формата сообщений
  • Добавление вложений, копий и скрытых копий
  • Настройка заголовков и кодировки
  • Обработка ошибок отправки

Давайте рассмотрим, как получить доступ к объекту PHPMailer и настроить его для отправки писем через SMTP, минуя стандартную функцию wp_mail().

Как получить объект PHPMailer в WordPress

WordPress создаёт объект PHPMailer при вызове функции wp_mail(). Чтобы получить доступ к нему и настроить вручную, можно использовать фильтр phpmailer_init. Пример:

add_action('phpmailer_init', 'wpid_phpmailer_smtp_settings');
function wpid_phpmailer_smtp_settings(PHPMailer $phpmailer) {
    // Здесь настраиваем параметры PHPMailer
}

Внутри этой функции можно задать параметры SMTP-сервера, авторизации, установить заголовки и другие настройки. Это самый безопасный и рекомендуемый способ вмешательства.

Настройка PHPMailer для отправки через SMTP

Практический пример настройки PHPMailer для отправки писем через SMTP-сервер Gmail:

add_action('phpmailer_init', 'wpid_phpmailer_smtp_settings');
function wpid_phpmailer_smtp_settings(PHPMailer $phpmailer) {
    $phpmailer->isSMTP();
    $phpmailer->Host = 'smtp.gmail.com';
    $phpmailer->SMTPAuth = true;
    $phpmailer->Port = 587;
    $phpmailer->Username = 'your-email@gmail.com';
    $phpmailer->Password = 'your-app-password';
    $phpmailer->SMTPSecure = 'tls';
    $phpmailer->From = 'your-email@gmail.com';
    $phpmailer->FromName = 'Ваш сайт';
    $phpmailer->CharSet = 'UTF-8';
}

Обратите внимание, что для Gmail нужно использовать специальный пароль приложения, если включена двухфакторная аутентификация.

Эти настройки автоматически применятся при любом вызове wp_mail() в WordPress, что позволяет централизованно управлять отправкой почты.

Пример отправки письма с вложением через PHPMailer в WordPress

Если нужно отправить письмо с вложением, можно использовать следующий пример, который создаёт объект PHPMailer вручную и отправляет письмо:

function wpid_send_email_with_attachment() {
    require_once ABSPATH . WPINC . '/class-phpmailer.php';
    require_once ABSPATH . WPINC . '/class-smtp.php';

    $mail = new PHPMailer(true);
    try {
        $mail->isSMTP();
        $mail->Host = 'smtp.example.com';
        $mail->SMTPAuth = true;
        $mail->Username = 'user@example.com';
        $mail->Password = 'password';
        $mail->SMTPSecure = 'tls';
        $mail->Port = 587;

        $mail->setFrom('user@example.com', 'Имя отправителя');
        $mail->addAddress('recipient@example.com', 'Имя получателя');
        $mail->Subject = 'Тема письма с вложением';
        $mail->Body    = 'Текст письма в HTML формате';
        $mail->AltBody = 'Текст письма в обычном формате';

        $mail->addAttachment('/путь/к/файлу.pdf');

        $mail->send();
        echo 'Письмо отправлено успешно';
    } catch (Exception $e) {
        echo "Ошибка при отправке письма: {$mail->ErrorInfo}";
    }
}

Этот пример можно адаптировать под любые задачи, например, отправку писем из пользовательских форм, уведомлений и т.д.

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

Если не хочется писать код, можно воспользоваться готовыми плагинами для WordPress, которые упрощают конфигурацию SMTP и PHPMailer:

  • WP Mail SMTP — один из самых популярных плагинов для настройки SMTP. Позволяет быстро подключить Gmail, Mailgun, SendGrid и другие сервисы. Подробнее о WP Mail SMTP
  • Post SMTP Mailer/Email Log — расширенный плагин с возможностью логирования писем и подробной настройкой.
  • Easy WP SMTP — простой инструмент для подключения SMTP без лишних настроек.

Эти плагины интегрируются с PHPMailer и позволяют решить большинство проблем с отправкой почты без программирования.

Обработка ошибок и отладка PHPMailer

При работе с PHPMailer важно правильно обрабатывать ошибки отправки писем, чтобы понимать причины сбоев.

В примере выше мы использовали блок try-catch и выводим сообщение об ошибке через $mail->ErrorInfo. В WordPress можно также подключить логирование ошибок с помощью плагинов или собственной реализации, чтобы фиксировать проблемы сразу.

Для включения подробной отладки PHPMailer можно задать:

$phpmailer->SMTPDebug = 2;
$phpmailer->Debugoutput = 'error_log';

Это позволит выводить отладочную информацию в error_log сервера, что помогает выявить проблемы с подключением к SMTP.

Выводы и рекомендации по использованию PHPMailer в WordPress

Работа с PHPMailer в WordPress — это мощный инструмент для настройки отправки почты, который поможет избежать проблем с доставкой и расширить функциональность писем. Рекомендуется использовать фильтр phpmailer_init для централизованной настройки SMTP, а для сложных случаев создавать собственные функции с использованием PHPMailer напрямую.

Если не хочется углубляться в код, рассмотрите использование плагинов, таких как WP Mail SMTP, которые значительно упрощают настройку и обеспечивают стабильную работу почты.

Как удалить пустые HTML-теги в WordPress
24.03.2026
WooCommerce: как автоматически удалять отзывы после оплаты заказа
03.06.2026
WooCommerce: автоматическое удаление товаров после покупки с подробной настройкой
23.05.2026
Как добавить многоязычность в WordPress без плагинов
12.02.2026
Автоматическое сохранение контента через AJAX в редакторе Gutenberg WordPress
29.01.2026