В WordPress по умолчанию для отправки писем используется класс PHPMailer. Несмотря на его широкое распространение и гибкость, в ряде случаев возникают проблемы с доставкой писем: письма попадают в спам, вообще не отправляются или задерживаются. В этой статье мы подробно разберем, как обойти использование PHPMailer и организовать надежную отправку писем с помощью альтернативных методов и плагинов, а также рассмотрим примеры кастомного кода.
Почему возникают проблемы с PHPMailer в WordPress
PHPMailer по умолчанию использует функцию mail() PHP, которая часто настроена плохо на хостингах. Это приводит к:
- Плохой доставляемости писем (спам-фильтры блокируют письма);
- Отправка писем с некорректным заголовком;
- Отсутствие SMTP-авторизации;
- Отсутствие шифрования;
- Проблемы с совместимостью на некоторых серверах.
Поэтому, если вы столкнулись с тем, что письма из WordPress не доходят до пользователей, стоит рассмотреть альтернативы.
Использование SMTP для отправки писем: плагины и настройки
Плагин WP Mail SMTP by WPForms
Один из самых популярных и простых в использовании плагинов — WP Mail SMTP. Он позволяет перенастроить отправку писем через SMTP-серверы популярных почтовых сервисов (Gmail, Mail.ru, Яндекс, SendGrid и др.).
Как настроить:
- Установите и активируйте плагин WP Mail SMTP.
- Перейдите в раздел Настройки → WP Mail SMTP.
- Выберите почтовый сервис или укажите свои параметры SMTP-сервера (хост, порт, логин, пароль, шифрование).
- Сохраните настройки и протестируйте отправку тестового письма.
Преимущество: вы полностью обходите использование mail(), отправляя письма через надежный SMTP-сервер с авторизацией и шифрованием.
Альтернативный плагин Post SMTP Mailer/Email Log
Еще один мощный плагин — Post SMTP. Он поддерживает OAuth2 для Gmail, ведет лог отправленных писем и автоматически переключается между SMTP-серверами при сбоях.
Его настройка аналогична WP Mail SMTP, но с дополнительным контролем за доставкой.
Кастомный код для отправки писем через SMTP без PHPMailer
Если по каким-то причинам вы хотите не использовать встроенный PHPMailer, можно самостоятельно реализовать отправку через SMTP, например, с помощью библиотеки SwiftMailer или PHPMailer с отключением стандартного метода WordPress.
Ниже приведен пример интеграции SwiftMailer в WordPress с переопределением функции wp_mail:
function wptickets_swiftmailer_mail($to, $subject, $message, $headers = '', $attachments = array()) {
require_once __DIR__ . '/vendor/autoload.php'; // Подключаем SwiftMailer через Composer
$transport = (new Swift_SmtpTransport('smtp.example.com', 587, 'tls'))
->setUsername('your_username')
->setPassword('your_password');
$mailer = new Swift_Mailer($transport);
$mailMessage = (new Swift_Message($subject))
->setFrom(['no-reply@wptickets.ru' => 'WP Tickets'])
->setTo(is_array($to) ? $to : explode(',', $to))
->setBody($message, 'text/html');
if (!empty($attachments)) {
foreach ($attachments as $file) {
$mailMessage->attach(Swift_Attachment::fromPath($file));
}
}
return $mailer->send($mailMessage);
}
remove_filter('wp_mail', 'wp_mail');
add_filter('wp_mail', 'wptickets_swiftmailer_mail');Этот код полностью заменит стандартную отправку писем на отправку через SwiftMailer с SMTP, что повысит надежность.
Другие варианты: API-сервисы для отправки почты
Еще один современный способ — использовать API почтовых сервисов, таких как:
- SendGrid
- Mailgun
- Amazon SES
Для работы с ними существуют готовые плагины, например, Mailgun for WordPress или SendGrid. Они отправляют письма через API, минуя SMTP и PHP-функцию mail().
Преимущество использования API — высокая скорость, надежность и возможность отслеживания доставки прямо через панель сервиса.
Советы по отладке и проверке отправки писем
Для диагностики проблем с отправкой писем рекомендуем:
- Использовать плагин WP Mail Logging для просмотра журналов отправленных писем;
- Проверять настройки SPF, DKIM и DMARC для домена — это сильно влияет на доставляемость;
- Тестировать почтовые настройки на разных SMTP-серверах;
- Проверять, не блокирует ли хостинг исходящие SMTP-соединения.
Правильная настройка и использование современных методов значительно повысят эффективность отправки почты в WordPress.