Владельцы сайтов на 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.
Создание автоматического отчета с помощью собственного кода
Если вы хотите гибко управлять отчётами и интегрировать их с вашей системой, можно написать собственный код, который будет формировать и отправлять отчёты по расписанию.
Основные шаги:
- Логирование писем при отправке.
- Создание функции генерации отчёта.
- Настройка 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.