Хук phpmailer_init
в WordPress позволяет изменять настройки PHPMailer, класса, используемого функцией wp_mail()
для отправки писем через встроенную функцию mail()
. С помощью этого хука можно настроить SMTP для отправки писем, изменить параметры подключения или добавить авторизацию.
do_action_ref_array( 'phpmailer_init', PHPMailer $phpmailer );
Параметры
- $phpmailer (PHPMailer) — экземпляр PHPMailer, передаваемый по ссылке, что позволяет напрямую изменять его свойства.
Как использовать
Для использования хука добавьте функцию, в которой настроите параметры PHPMailer. Ниже приведены примеры настройки SMTP для различных провайдеров.
add_action( 'phpmailer_init', 'custom_phpmailer_settings' );
/**
* Настройка PHPMailer для отправки через SMTP.
*
* @param PHPMailer $phpmailer Экземпляр PHPMailer.
*/
function custom_phpmailer_settings( $phpmailer ) {
// Настройка параметров
}
Пример 1: Настройка SMTP-сервера для Yandex
Этот код настраивает PHPMailer для отправки писем через SMTP-сервер Yandex, указывая необходимые данные для подключения.
add_action( 'phpmailer_init', 'setup_yandex_smtp' );
function setup_yandex_smtp( $phpmailer ) {
$phpmailer->isSMTP();
$phpmailer->CharSet = 'UTF-8';
$phpmailer->Host = 'smtp.yandex.ru';
$phpmailer->SMTPAuth = true;
$phpmailer->Username = '[email protected]';
$phpmailer->Password = 'your_password';
$phpmailer->SMTPSecure = 'ssl';
$phpmailer->Port = 465;
$phpmailer->From = '[email protected]';
$phpmailer->FromName = 'Your Site Name';
}
Пример 2: Использование SMTP-сервера Google (Gmail)
Для отправки писем через Gmail требуется настройка SMTP-соединения с авторизацией и использованием защищённого соединения.
add_action( 'phpmailer_init', 'setup_gmail_smtp' );
function setup_gmail_smtp( $phpmailer ) {
$phpmailer->isSMTP();
$phpmailer->Host = 'smtp.gmail.com';
$phpmailer->SMTPAuth = true;
$phpmailer->Username = '[email protected]';
$phpmailer->Password = 'your_password';
$phpmailer->SMTPSecure = 'tls';
$phpmailer->Port = 587;
$phpmailer->From = '[email protected]';
$phpmailer->FromName = 'Your Site Name';
}
Пример 3: Настройка SMTP для Office 365
Для отправки писем через корпоративный аккаунт Office 365 можно использовать следующие настройки. Это повысит доставляемость и стабильность писем.
add_action( 'phpmailer_init', 'setup_office365_smtp' );
function setup_office365_smtp( $phpmailer ) {
$phpmailer->isSMTP();
$phpmailer->Host = 'smtp.office365.com';
$phpmailer->SMTPAuth = true;
$phpmailer->Username = '[email protected]';
$phpmailer->Password = 'your_password';
$phpmailer->SMTPSecure = 'tls';
$phpmailer->Port = 587;
$phpmailer->From = '[email protected]';
$phpmailer->FromName = 'Your Site Name';
}
Пример 4: Логирование ошибок отправки писем
Чтобы отслеживать ошибки отправки писем, можно подключить хук wp_mail_failed
и записывать ошибки в лог-файл.
add_action( 'wp_mail_failed', 'log_mail_errors' );
function log_mail_errors( $wp_error ) {
error_log( 'Ошибка отправки письма: ' . $wp_error->get_error_message() );
}
Советы по безопасности
- Не храните пароли в коде: Используйте переменные окружения или опции WordPress для хранения чувствительных данных.
- Добавьте SPF и DKIM записи: Это поможет улучшить доставляемость писем и снизит вероятность попадания в папку «Спам».
Заключение
Используя хук phpmailer_init
, вы можете гибко настраивать отправку писем в WordPress. Это позволяет подключаться к популярным сервисам SMTP и улучшить надёжность доставки сообщений, что важно для любого сайта с функцией отправки писем.