Функция wp_mail()
в WordPress служит для отправки писем и напоминает стандартную функцию mail()
в PHP, но предоставляет дополнительные возможности и интеграцию с фильтрами и хостингом. В этой статье разберем параметры, настройки и особенности wp_mail()
на примерах, чтобы ваша отправка писем стала максимально эффективной.
wp_mail( string|string[] $to, string $subject, string $message, string|string[] $headers = '', string|string[] $attachments = array() ): bool
Функция возвращает true
в случае успешного выполнения, что означает отсутствие ошибок при попытке отправки, но не гарантирует успешную доставку письма.
Основные параметры
- $to (обязательный): строка или массив email-адресов получателей.
- $subject (обязательный): тема письма.
- $message (обязательный): текст сообщения.
- $headers (необязательный): строка или массив с дополнительными заголовками.
- $attachments (необязательный): строка или массив с полными путями к прикрепленным файлам.
1. Простой пример отправки письма
Отправим обычное текстовое письмо:
$to = '[email protected]';
$subject = 'Пример простой отправки';
$message = 'Это текстовое сообщение.';
wp_mail( $to, $subject, $message );
2. Использование HTML-разметки в письме
По умолчанию формат письма — text/plain
, то есть HTML в нем не отображается. Для отправки HTML-писем можно указать Content-Type
в заголовке:
$to = '[email protected]';
$subject = 'HTML-сообщение';
$message = '<h1>Это HTML сообщение</h1><p>Текст с разметкой</p>';
$headers = array('Content-Type: text/html; charset=UTF-8');
wp_mail( $to, $subject, $message, $headers );
Или задать формат через фильтр:
add_filter('wp_mail_content_type', function() {
return 'text/html';
});
wp_mail( '[email protected]', 'HTML-сообщение', '<h1>HTML содержимое</h1>' );
// Не забудьте удалить фильтр, чтобы не повлиять на другие письма
remove_filter('wp_mail_content_type', 'wpdocs_set_html_mail_content_type');
3. Указание отправителя
По умолчанию отправителем выступает [email protected]
. Вы можете задать свои данные через $headers
:
$to = '[email protected]';
$subject = 'Письмо с указанием отправителя';
$message = 'Тестовое сообщение';
$headers = array('From: MySite <[email protected]>');
wp_mail( $to, $subject, $message, $headers );
4. Добавление копии и скрытой копии (Cc и Bcc)
Массив $headers
также поддерживает Cc и Bcc для копий и скрытых копий:
$to = '[email protected]';
$subject = 'Письмо с копиями';
$message = 'Это письмо будет отправлено нескольким адресатам';
$headers = array(
'From: MySite <[email protected]>',
'Cc: [email protected]',
'Bcc: [email protected]'
);
wp_mail( $to, $subject, $message, $headers );
5. Прикрепление файлов к письму
Вы можете добавить вложения к вашему письму, указав полный путь к файлу:
$to = '[email protected]';
$subject = 'Письмо с вложением';
$message = 'Смотрите прикрепленный файл.';
$attachments = array( WP_CONTENT_DIR . '/uploads/example.pdf' );
wp_mail( $to, $subject, $message, '', $attachments );
Полезные фильтры и функции для wp_mail
- wp_mail_from — изменяет email отправителя.
- wp_mail_from_name — изменяет имя отправителя.
- wp_mail_content_type — изменяет тип содержимого, например, чтобы включить HTML.
- wp_mail_failed — позволяет обрабатывать ошибки при отправке.
wp_mail_charset
— задать кодировку письма.
Пример с фильтрами и настройками SMTP
Если требуется отправлять письма через SMTP-сервер, настройка будет выглядеть следующим образом:
add_action('phpmailer_init', 'configure_smtp');
function configure_smtp(PHPMailer $phpmailer) {
$phpmailer->isSMTP();
$phpmailer->Host = 'smtp.example.com';
$phpmailer->Port = 587;
$phpmailer->Username = 'your_username';
$phpmailer->Password = 'your_password';
$phpmailer->SMTPAuth = true;
$phpmailer->SMTPSecure = 'tls';
$phpmailer->From = '[email protected]';
$phpmailer->FromName = 'Your Name';
}
wp_mail('[email protected]', 'Тест SMTP', 'Проверка отправки через SMTP.');
Советы по безопасности при отправке почты
Чтобы обезопасить процесс отправки почты, следуйте этим рекомендациям:
- Проверка email-адресов: перед отправкой проверяйте валидность адреса с помощью
filter_var
. - Ограничение частоты отправок: предотвращает спам-атаки.
- Использование reCAPTCHA: защищает формы, отправляющие письма, от ботов.
Заключение
Функция wp_mail()
в WordPress предоставляет мощный и гибкий инструмент для отправки писем с различными настройками и форматами. Поддержка заголовков, HTML-контента и вложений делают ее универсальной для разных задач.