Как настроить отправку почты через SMTP в WordPress

Почему важно настроить SMTP для отправки писем в WordPress

По умолчанию WordPress использует функцию wp_mail(), которая в свою очередь работает через стандартную PHP-функцию mail(). Однако многие хостинги плохо поддерживают эту функцию, из-за чего письма могут не доходить до адресатов или попадать в спам. Это особенно критично для уведомлений о заказах, регистрации пользователей, восстановления пароля и других важных писем.

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

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

Настройка SMTP через популярные плагины WordPress

Если вы хотите быстро и без особых знаний настроить SMTP, можно использовать специализированные плагины. Вот самые популярные и проверенные решения:

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

Для примера рассмотрим настройку через WP Mail SMTP:

  1. Установите и активируйте плагин WP Mail SMTP с официального репозитория.
  2. Перейдите в раздел «Настройки» – «WP Mail SMTP».
  3. Заполните поля SMTP-сервера, порт, тип шифрования (обычно TLS или SSL), логин и пароль.
  4. Сохраните настройки и воспользуйтесь тестовой отправкой письма.

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

Настройка SMTP в WordPress программно с примером кода

WordPress использует класс PHPMailer для отправки писем, и мы можем переопределить параметры SMTP с помощью хука phpmailer_init. Ниже пример кода, который нужно добавить в файл functions.php вашей темы или в отдельный плагин:

add_action('phpmailer_init', 'wpapp_set_smtp_settings');
function wpapp_set_smtp_settings($phpmailer) {
    $phpmailer->isSMTP();
    $phpmailer->Host       = 'smtp.example.com'; // SMTP сервер
    $phpmailer->SMTPAuth   = true;              // Включаем SMTP авторизацию
    $phpmailer->Port       = 587;                // Порт SMTP
    $phpmailer->Username   = 'user@example.com'; // Логин SMTP
    $phpmailer->Password   = 'password';         // Пароль SMTP
    $phpmailer->SMTPSecure = 'tls';              // Шифрование: tls или ssl
    $phpmailer->From       = 'noreply@example.com';
    $phpmailer->FromName   = 'Ваш сайт';
}

Этот код полностью заменит стандартную отправку на SMTP с заданными параметрами. Ниже разберем ключевые моменты:

  • isSMTP() – переключает отправку на использование SMTP.
  • Host – адрес SMTP-сервера.
  • SMTPAuth – требует ли сервер авторизацию.
  • Port – порт, обычно 587 для TLS и 465 для SSL.
  • Username и Password – учетные данные для входа на SMTP-сервер.
  • SMTPSecure – тип шифрования.
  • From и FromName – адрес и имя отправителя.

Как проверить работу SMTP в коде

Чтобы убедиться, что письма отправляются корректно, можно использовать функцию wp_mail() с вашим SMTP. Например, добавьте временный код:

add_action('init', 'wpapp_test_smtp_mail');
function wpapp_test_smtp_mail() {
    if (isset($_GET['test_smtp'])) {
        $to = 'your-email@example.com';
        $subject = 'Тест SMTP';
        $message = 'Письмо отправлено через SMTP успешно!';
        $sent = wp_mail($to, $subject, $message);
        if ($sent) {
            echo 'Письмо отправлено успешно';
        } else {
            echo 'Ошибка отправки письма';
        }
        exit;
    }
}

После добавления зайдите на сайт с параметром ?test_smtp=1, например: https://ваш-сайт.ru/?test_smtp=1 и проверьте результат.

Решение проблем при настройке SMTP в WordPress

Иногда даже при правильной настройке SMTP письма не доходят или попадают в спам. Вот что стоит проверить и как устранить основные проблемы:

1. Правильные реквизиты SMTP и порт

Ошибка в логине, пароле, адресе сервера или порте – самая частая причина сбоев. Уточните эти данные у вашего почтового провайдера или хостинга.

2. Использование шифрования

Не все почтовые серверы поддерживают SSL или TLS на портах по умолчанию. Попробуйте сменить порт или тип шифрования.

3. Настройка SPF и DKIM записей для домена

Чтобы письма не попадали в спам, в DNS домена должны быть правильно настроены SPF и DKIM записи. Это подтверждает, что ваш сервер имеет право отправлять почту от имени домена.

4. Ограничения хостинга

Некоторые хостинги блокируют исходящий SMTP-трафик. Свяжитесь с поддержкой, чтобы уточнить ограничения.

Использование плагина Clearfy Pro для улучшения отправки почты

Плагин Clearfy Pro содержит модуль, который позволяет оптимизировать отправку почты и автоматически настраивать SMTP. Помимо этого, он помогает отключать лишние функции WordPress, которые могут влиять на производительность и безопасность, в том числе связанные с почтовыми функциями.

Если вы хотите комплексно улучшить работу сайта и отправку писем без глубоких знаний, Clearfy Pro станет хорошим выбором.

Заключение

Настройка SMTP в WordPress гарантирует надежную доставку писем и повышает доверие пользователей к вашему сайту. Используйте плагины для быстрой настройки или реализуйте собственное решение через phpmailer_init, если нужна гибкость и кастомизация.

Не забудьте проверить правильность настроек и убедиться в корректной работе через тестовые письма. Обязательно настройте SPF и DKIM записи для вашего домена, чтобы минимизировать попадание писем в спам.

Для удобства и комплексной оптимизации рекомендуем обратить внимание на Clearfy Pro от WPSHOP.

Наш каталог плагинов WordPress