wpmail.ru wordpress WP Mail

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

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

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

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

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

Автоматизация отчетов позволяет получать актуальную информацию и улучшать коммуникацию с пользователями.

Используемые плагины для логирования и отчётов по почте

WP Mail Logging — базовый плагин для отслеживания писем

WP Mail Logging — простой, но эффективный плагин, который ведёт лог отправленных писем. Он сохраняет в базе данные о каждом письме, включая тему, получателя, статус и время отправки.

  • Устанавливается из репозитория WordPress.
  • Позволяет просматривать логи в админке.
  • Можно экспортировать данные для анализа.

Пример настройки и использования:

add_action('wpmail_wp_mail_log_after_mail', function($mail) {
    // $mail содержит массив с данными письма
    error_log('Отправлено письмо на: ' . $mail['to']);
});

Post SMTP Mailer/Email Log — расширенный контроль

Этот плагин не только логирует письма, но и позволяет настроить отправку через SMTP или API, а также отправлять отчеты об ошибках.

  • Поддержка популярных почтовых сервисов.
  • Отчёты о доставке и ошибках.
  • Возможность настроить уведомления на email или Slack.

Создание автоматического отчета с помощью собственного кода

Если вы хотите гибко управлять отчётами и интегрировать их с вашей системой, можно написать собственный код, который будет формировать и отправлять отчёты по расписанию.

Основные шаги:

  1. Логирование писем при отправке.
  2. Создание функции генерации отчёта.
  3. Настройка WP-Cron для периодической отправки отчёта.

Пример логирования писем в базу данных

Сначала создадим таблицу для хранения логов. Это можно сделать при активации плагина или темы:

function wpmail_create_mail_log_table() {
    global $wpdb;
    $table_name = $wpdb->prefix . 'wpmail_mail_log';
    $charset_collate = $wpdb->get_charset_collate();
    $sql = "CREATE TABLE IF NOT EXISTS $table_name (
        id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
        to_email TEXT NOT NULL,
        subject TEXT NOT NULL,
        headers TEXT NULL,
        body LONGTEXT NULL,
        status VARCHAR(20) NULL,
        sent_at DATETIME DEFAULT CURRENT_TIMESTAMP,
        PRIMARY KEY (id)
    ) $charset_collate;";

    require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
    dbDelta($sql);
}
register_activation_hook(__FILE__, 'wpmail_create_mail_log_table');

Функция для записи лога при отправке письма

add_action('wp_mail', 'wpmail_log_mail', 10, 1);
function wpmail_log_mail($args) {
    global $wpdb;
    $table = $wpdb->prefix . 'wpmail_mail_log';

    $wpdb->insert($table, [
        'to_email' => maybe_serialize($args['to']),
        'subject' => $args['subject'],
        'headers' => maybe_serialize($args['headers']),
        'body' => $args['message'],
        'status' => 'pending',
        'sent_at' => current_time('mysql')
    ]);

    return true;
}

Обратите внимание: хук wp_mail срабатывает до отправки письма. Для отслеживания статуса отправки лучше использовать сторонние SMTP-плагины с callback или фильтры.

Генерация отчета и отправка по расписанию

Создадим задачу WP-Cron, которая будет раз в сутки отправлять сводный отчет на email администратора:

function wpmail_send_daily_report() {
    global $wpdb;
    $table = $wpdb->prefix . 'wpmail_mail_log';

    $yesterday = date('Y-m-d H:i:s', strtotime('-1 day'));

    $mails = $wpdb->get_results($wpdb->prepare(
        "SELECT to_email, subject, status, sent_at FROM $table WHERE sent_at >= %s",
        $yesterday
    ));

    if (empty($mails)) {
        return; // Нет данных для отчёта
    }

    $count = count($mails);
    $body = "Отчет по отправке писем за последние 24 часа:\nВсего писем: $count\n\n";

    foreach ($mails as $mail) {
        $to = maybe_unserialize($mail->to_email);
        if (is_array($to)) $to = implode(', ', $to);
        $body .= "Кому: $to\nТема: $mail->subject\nСтатус: $mail->status\nДата: $mail->sent_at\n---\n";
    }

    wp_mail(get_option('admin_email'), 'Ежедневный отчет по отправке писем', $body);
}

if (!wp_next_scheduled('wpmail_daily_report_event')) {
    wp_schedule_event(time(), 'daily', 'wpmail_daily_report_event');
}
add_action('wpmail_daily_report_event', 'wpmail_send_daily_report');

Интеграция с плагином Clearfy Pro для улучшения почтовых функций

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

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

Заключение: что вы получите с автоматическими отчетами

Создание и внедрение системы автоматических отчетов по отправке почты в WordPress позволит вам:

  • Следить за реальной картиной доставки писем.
  • Быстро выявлять и исправлять ошибки.
  • Анализировать эффективность email-уведомлений.
  • Улучшать коммуникацию с пользователями.

Используйте готовые плагины для быстрого старта или кастомный код для гибкой интеграции с вашим проектом. А если важно комплексное решение — обратите внимание на Clearfy Pro.

×
WPRemark
Внимание Внимание Внимание Внимание
-15%

на WPRemark плагин WordPress

Прокачай свой сайт! ⋙