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
Для настройки SMTP на WordPress с использованием сервера Office 365, нужно изменить стандартную функцию отправки писем и использовать SMTP-сервер Microsoft. Это позволяет отправлять письма через ваш корпоративный Office 365 аккаунт, что повышает доставляемость сообщений и их надежность. В этом руководстве рассмотрим, как пошагово настроить отправку писем с WordPress через Office 365. Чтобы воспользоваться данным кодом, нужно быть зарегистрированным в office365. Нужно добавить специальный код в файл functions.php вашей темы или в подключаемый плагин. Это позволит настроить параметры SMTP для WordPress. WordPress использует PHPMailer для отправки писем, и мы можем изменить его настройки с помощью хука phpmailer_init. Настройки безопасности: Обязательно используйте протокол tls для повышения безопасности передачи данных. Аутентификация по Username и Password позволит убедиться, что вы действительно имеете доступ к указанной учетной записи. После добавления кода, проверьте отправку писем через форму контактов или плагин тестирования SMTP. Убедитесь, что письма успешно доставляются. Ошибка подключения (Connection Error): Проблемы с доставляемостью: Настройка SMTP для WordPress через Office 365 – это простой и эффективный способ улучшить доставляемость писем и повысить их надежность. Следуя данному руководству, вы сможете легко интегрировать ваш WordPress сайт с корпоративной почтой Office 365 и обеспечить стабильную отправку писем.Пошаговая настройка SMTP для WordPress с Office 365:
1) Регистрация аккаунта в office365
2) Использование хука 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 = 'Мой супер сайт'; // Название сайта, указать своё
}
3) Проверка работоспособности
Возможные ошибки и их решения:
Заключение:
Список изменений
| С версии 2.2.0 | Введена. |
Где вызывается хук
do_action_ref_array( 'phpmailer_init', array( &$phpmailer ) );
Где используется хук в WordPress
add_action( 'phpmailer_init', 'fix_phpmailer_messageid' );