С ростом вашего проекта растёт количество отправляемых сайтом писем (оповещения пользователям, регистрации, блокировки) и всё больше из них ничанают попадать в спам или не доходить до адресата совсем, так как по умолчанию WordPress отправляет письма через стандартный системный траспорт.
Выход в данной ситуации — отправка писем через SMTP с авторизацией. И нет смысла ставить плагины, всё решается в несколько строк кода в конфиге вашего сайта.
В wp-config.php разместите данные константы перед определением ABSPATH
и замените тестовые данные реквизитами своего SMTP сервера (yandex, google или любой другой):
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
<?php // Имя пользователя для SMTP авторизации define( 'SMTP_USER' , 'user@example.com' ); // Пароль пользователя для SMTP авторизации define( 'SMTP_PASS' , 'smtp password' ); // Хост почтового сервера define( 'SMTP_HOST' , 'smtp.example.com' ); // Обратный Email define( '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
, передавая в него данные из констант, определённых в конфиге:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
|
<?php /** * Настройка 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 со следующим содержимым и откройте его через браузер:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
<?php // Кому отправляем $to = 'you@yourdomain.com' ; // Тема письма $subject = 'Проверка wp_mail' ; // Само сообщение $message = 'Это тестовое сообщение' ; // Загружаем только ядро WordPress define( 'WP_USE_THEMES' , false ); require ( 'wp-load.php' ); // Отправляем письмо $sent_message = wp_mail( $to , $subject , $message ); if ( $sent_message ) { // Если сообщение успешно отправилось echo 'Все работает!' ; } else { // Ошибки при отправке echo 'Где-то допущена ошибка!' ; } |