phpmailer_init
Позволяет настроить отправку писем через SMTP с авторизацией. Срабатывает после инициализации PHPMailer{}.
Функция wp_mail() использует класс PHPMailer{} для отправки почты через PHP функцию mail(). Этот хук позволяет подключаться к объекту PHPMailer{} и изменить параметры его работы.
Использование
add_action( 'phpmailer_init', 'wp_kama_phpmailer_init_action' ); /** * Function for `phpmailer_init` action-hook. * * @param PHPMailer $phpmailer The PHPMailer instance (passed by reference). * * @return void */ function wp_kama_phpmailer_init_action( $phpmailer ){ // action... }
- $phpmailer(PHPMailer)
- Экземпляр PHPMailer{} (передается по ссылке).
Примеры
#1 Пример настройки SMTP сервера от Yandex
// настройка SMTP add_action( 'phpmailer_init', 'smtp_phpmailer_init' ); function smtp_phpmailer_init( $phpmailer ){ $phpmailer->IsSMTP(); $phpmailer->CharSet = 'UTF-8'; $phpmailer->Host = 'smtp.yandex.ru'; $phpmailer->Username = 'no-reply@mailer.Megasite.com'; $phpmailer->Password = '6AAAuuSSS2k'; $phpmailer->SMTPAuth = true; $phpmailer->SMTPSecure = 'ssl'; $phpmailer->Port = 465; $phpmailer->From = 'no-reply@mailer.Megasite.com'; $phpmailer->FromName = 'MY-Megasite'; $phpmailer->isHTML( true ); }
#2 Общий пример установка своего SMTP-соединения
add_action( 'phpmailer_init', 'my_phpmailer_example' ); function my_phpmailer_example( $phpmailer ) { $phpmailer->isSMTP(); $phpmailer->Host = 'smtp.example.com'; $phpmailer->SMTPAuth = true; // Force it to use Username and Password to authenticate $phpmailer->Port = 25; $phpmailer->Username = 'yourusername'; $phpmailer->Password = 'yourpassword'; // Additional settings… //$phpmailer->SMTPSecure = "tls"; // Choose SSL or TLS, if necessary for your server //$phpmailer->From = "you@yourdomail.com"; //$phpmailer->FromName = "Your Name"; }
Логирование ошибок:
add_action('wp_mail_failed', 'log_mailer_errors', 10, 1); function log_mailer_errors( $wp_error ){ // выведем ошибку в .log файл error_log( $wp_error->get_error_message() ); }
#3 Пример настройки SMTP сервера для office 365
Чтобы воспользоваться данным кодом, нужно быть зарегистрированным в office365.
add_action( 'phpmailer_init', 'smtp_enable_for_office365' ); function smtp_enable_for_office365( $phpmailer ) { $phpmailer->isSMTP(); // Указываем, что это SMTP $phpmailer->SMTPAuth = true; // Указываем, что это SMTP с авторизацией $phpmailer->Host = 'smtp.office365.com'; // URL, изменять по необходимости $phpmailer->Port = '587'; // Порт, изменять по необходимости $phpmailer->Username = 'login-office365@mail.com'; // Логин в office365, указать свой $phpmailer->Password = 'pass12345'; // Пароль в office365, указать свой $phpmailer->SMTPSecure = 'tls'; // Указываем, что это SMTP в режиме tls $phpmailer->From = 'mail@site.com'; // От кого, указать свой email $phpmailer->FromName = 'Мой супер сайт'; // Название сайта, указать своё }
Список изменений
С версии 2.2.0 | Введена. |
Где вызывается хук
phpmailer_init
wp-includes/pluggable.php 540
do_action_ref_array( 'phpmailer_init', array( &$phpmailer ) );
Где используется хук в WordPress
wp-includes/ms-default-filters.php 107
add_action( 'phpmailer_init', 'fix_phpmailer_messageid' );