phpmailer_initхук-событиеWP 2.2.0

Позволяет настроить отправку писем через 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

#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 );
}
0

#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() );
}
0

#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 Введена.

Где вызывается хук

wp_mail()
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' );