Как создать автоматическую отправку email в WordPress

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

Почему важно правильно настроить автоматическую отправку email в WordPress

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

Поэтому для надёжной автоматической отправки email нужно:

  • Использовать SMTP-серверы или сторонние сервисы отправки почты.
  • Программно контролировать процесс, чтобы письма отправлялись именно тогда, когда нужно.
  • Внедрять логи и отладку для отслеживания ошибок отправки.

Далее рассмотрим, как все это реализовать.

Настройка SMTP для улучшения доставки писем в WordPress

Чтобы гарантировать доставку писем, лучше всего подключить SMTP-сервер — например, Gmail, Mailgun или другой почтовый сервис, поддерживающий SMTP. Для этого можно использовать плагины:

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

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

Пример базовой настройки SMTP через WP Mail SMTP

В панели управления WordPress установите и активируйте WP Mail SMTP, затем перейдите в настройки плагина и заполните поля:

  • Mailer: SMTP
  • SMTP Host: smtp.gmail.com
  • Encryption: TLS
  • SMTP Port: 587
  • SMTP Username: ваш_email@gmail.com
  • SMTP Password: пароль приложения

После сохранения плагин протестирует соединение и выведет результат.

Программная реализация автоматической отправки email в WordPress

Теперь рассмотрим, как самостоятельно создавать и отправлять письма по расписанию или при определённых событиях с помощью кода.

Использование wp_mail() с фильтром для SMTP

Если вы не хотите использовать плагин, можно программно подключить SMTP, например, через PHPMailer, с помощью фильтра phpmailer_init. Вот пример, как это сделать в файле functions.php вашей темы или в кастомном плагине:

add_action('phpmailer_init', 'wpbe_phpmailer_smtp');
function wpbe_phpmailer_smtp($phpmailer) {
    $phpmailer->isSMTP();
    $phpmailer->Host = 'smtp.gmail.com';
    $phpmailer->SMTPAuth = true;
    $phpmailer->Port = 587;
    $phpmailer->Username = 'ваш_email@gmail.com';
    $phpmailer->Password = 'пароль_приложения';
    $phpmailer->SMTPSecure = 'tls';
    $phpmailer->From = 'ваш_email@gmail.com';
    $phpmailer->FromName = 'WPBE Автоотправка';
}

После этого вызов wp_mail() будет использовать указанный SMTP.

Пример функции автоматической отправки email по расписанию

Для автоматической отправки писем, например, ежедневных уведомлений, используйте WP-Cron. Пример:

// Регистрируем событие при активации плагина
register_activation_hook(__FILE__, 'wpbe_activation');
function wpbe_activation() {
    if (! wp_next_scheduled('wpbe_daily_email_event')) {
        wp_schedule_event(time(), 'daily', 'wpbe_daily_email_event');
    }
}

// Удаляем событие при деактивации
register_deactivation_hook(__FILE__, 'wpbe_deactivation');
function wpbe_deactivation() {
    wp_clear_scheduled_hook('wpbe_daily_email_event');
}

// Хук для отправки письма
add_action('wpbe_daily_email_event', 'wpbe_send_daily_email');

function wpbe_send_daily_email() {
    $to = 'user@example.com';
    $subject = 'Ежедневное уведомление с wpbe.ru';
    $message = 'Это автоматическое письмо, отправленное ежедневно.';
    $headers = array('Content-Type: text/html; charset=UTF-8');
    wp_mail($to, $subject, $message, $headers);
}

Таким образом, каждый день в указанное время будет отправляться письмо.

Автоматическая отправка email при событиях — пример с комментариями

Иногда нужно отправлять письма при наступлении определённых событий — например, когда кто-то оставляет комментарий. Ниже пример, как отправить уведомление администратору после публикации нового комментария:

add_action('wp_insert_comment', 'wpbe_notify_admin_new_comment', 10, 2);
function wpbe_notify_admin_new_comment($comment_id, $comment_object) {
    if ($comment_object->comment_approved != 1) return; // Отправляем только одобренные
    $admin_email = get_option('admin_email');
    $subject = 'Новый комментарий на сайте wpbe.ru';
    $message = 'Появился новый комментарий от ' . $comment_object->comment_author . ':<br>' . $comment_object->comment_content;
    $headers = array('Content-Type: text/html; charset=UTF-8');
    wp_mail($admin_email, $subject, $message, $headers);
}

Этот пример полезен, если стандартного уведомления не хватает или нужно кастомизировать письмо.

Рекомендации по отладке и логированию отправки писем

Чтобы понимать, отправляется ли письмо и нет ли ошибок, полезно вести лог. Можно использовать простой лог через файл или плагин Email Log.

Пример логирования в файл:

function wpbe_log_email($to, $subject, $message) {
    $log = date('Y-m-d H:i:s') . " | To: $to | Subject: $subject\n";
    file_put_contents(__DIR__ . '/email_log.txt', $log, FILE_APPEND);
}

// Вызов внутри функции отправки
wpbe_log_email($to, $subject, $message);

Это поможет отследить, когда и кому отправлялись письма.

Выводы и лучшие практики для автоотправки почты в WordPress

Подводя итог:

  • Используйте SMTP через плагины или программно для надёжной доставки.
  • Автоматизируйте отправку через WP-Cron для регулярных рассылок или уведомлений.
  • Применяйте хуки WordPress для отправки почты при событиях.
  • Ведите логирование для отладки и контроля.
  • Проверяйте спам-фильтры и права доступа почтового сервера.
WooCommerce: автоматическое удаление заказов по срокам без плагинов
01.06.2026
Как автоматизировать управление пользователями WordPress по ролям
29.03.2026
Как автоматизировать удаление нерабочих редиректов в WordPress
12.01.2026
Как добавить пользовательские подсказки (tooltips) в админке WordPress
24.12.2025
Автоматическое удаление возврашённых и отменённых заказов WooCommerce по сроку
20.05.2026