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

Для настройки SMTP на WordPress с использованием сервера Office 365, нужно изменить стандартную функцию отправки писем и использовать SMTP-сервер Microsoft. Это позволяет отправлять письма через ваш корпоративный Office 365 аккаунт, что повышает доставляемость сообщений и их надежность. В этом руководстве рассмотрим, как пошагово настроить отправку писем с WordPress через Office 365.

Пошаговая настройка SMTP для WordPress с Office 365:

1) Регистрация аккаунта в office365

Чтобы воспользоваться данным кодом, нужно быть зарегистрированным в office365.

2) Использование хука phpmailer_init

Нужно добавить специальный код в файл functions.php вашей темы или в подключаемый плагин. Это позволит настроить параметры SMTP для WordPress.

WordPress использует PHPMailer для отправки писем, и мы можем изменить его настройки с помощью хука phpmailer_init.

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   = 'Мой супер сайт';              // Название сайта, указать своё
}
  • Настройки безопасности: Обязательно используйте протокол tls для повышения безопасности передачи данных. Аутентификация по Username и Password позволит убедиться, что вы действительно имеете доступ к указанной учетной записи.

  • Советы по безопасности: Никогда не сохраняйте логин и пароль в открытом виде в коде. Для этого используйте переменные окружения, константы или опции (базу данных).

3) Проверка работоспособности

После добавления кода, проверьте отправку писем через форму контактов или плагин тестирования SMTP. Убедитесь, что письма успешно доставляются.

Возможные ошибки и их решения:

  1. Ошибка подключения (Connection Error):

    • Убедитесь, что сервер поддерживает исходящие соединения на порт 587.
    • Проверьте корректность логина и пароля для SMTP-сервера.
  2. Проблемы с доставляемостью:

    • Если письма попадают в спам, добавьте SPF и DKIM записи на уровне DNS.
  3. Неверный протокол шифрования:
    • Убедитесь, что используете tls или ssl в зависимости от настроек вашего Office 365 аккаунта.

Заключение:

Настройка SMTP для WordPress через Office 365 – это простой и эффективный способ улучшить доставляемость писем и повысить их надежность. Следуя данному руководству, вы сможете легко интегрировать ваш WordPress сайт с корпоративной почтой Office 365 и обеспечить стабильную отправку писем.

Список изменений

С версии 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' );