Настройка отправки почты в WordPress через SMTP без плагинов

С ростом проекта растёт число отправляемых веб-сайтом писем(оповещения посетителям, регистрации, блокировки) и всё больше из них ничанают попадать в спам или не доходить до адресата совсем, поскольку по умолчанию WordPress отправляет письма через стандартный системный траспорт.

Выход в данной ситуации — отправка писем через SMTP с авторизацией. И нет смысла ставить плагины, всё решается в пару строк кода в конфиге веб-сайта.

В wp-config.php разместите данные константы перед определением ABSPATH и замените тестовые данные реквизитами SMTP сервера(yandex, google или любой другой):

<?php// Имя посетителя для SMTP авторизацииdefine( 'SMTP_USER', 'user@example.com'); // Пароль посетителя для SMTP авторизацииdefine( 'SMTP_PASS', 'smtp password'); // Хост почтового сервераdefine( 'SMTP_HOST', 'smtp.example.com'); // Обратный Emaildefine( 'SMTP_FROM', 'website@example.com'); // Имя для обратного мылаdefine( 'SMTP_NAME', 'Вася Пупкин'); // Номер порта(25, 465, 587)define( 'SMTP_PORT', '25'); // Тип шифиования(ssl или tls)define( 'SMTP_SECURE', 'tls'); // Включение/отключение шифрованияdefine( 'SMTP_AUTH', true); // Режим отладки(0, 1, 2)define( 'SMTP_DEBUG', 0);

В functions.php фильтруем стандартные настройки PHPMailer, передавая в него данные из констант, определённых в конфиге:

<?phpuse PHPMailer\PHPMailer\PHPMailer;/** * Параметр SMTP * * @param PHPMailer $phpmailer объект мэилера */function mihdan_send_smtp_email( PHPMailer $phpmailer) { $phpmailer->isSMTP(); $phpmailer->Host = SMTP_HOST; $phpmailer->SMTPAuth = SMTP_AUTH; $phpmailer->Port = SMTP_PORT; $phpmailer->Username = SMTP_USER;  $phpmailer->Password   = SMTP_PASS;  $phpmailer->SMTPSecure = SMTP_SECURE;  $phpmailer->From       = SMTP_FROM;  $phpmailer->FromName   = SMTP_NAME;}add_action( 'phpmailer_init', 'mihdan_send_smtp_email');

Проверка отправки

В корне веб-сайта создайте файл
mail.php
со следующим содержимым и откройте его через браузер:

<?php// Кому отправляем$to = 'you@yourdomain.com';  // Тема письма$subject = 'Проверка wp_mail'; // Само сообщение$message = 'Это тестовое сообщение';  // Загружаем только ядро WordPressdefine( 'WP_USE_THEMES', false);require( 'wp-load.php');  // Отправляем письмо$sent_message = wp_mail( $to, $subject, $message); if( $sent_message) {    // Если сообщение успешно отправилось echo 'Всё чётко настроил, бро!';} else {    // Ошибки при отправке echo 'Где-то ты лоханулся знатно!';}

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *