Как отправить электронную почту WordPress с помощью SMTP-сервера
У вас проблемы с отправкой писем в WordPress? Под капотом WordPress отправляет электронную почту с помощью функции PHP mail(). Иногда ваш веб-хостинг неправильно настраивает параметры почты. В результате с вашего веб-сайта WordPress нельзя отправлять электронные письма.
Вы можете решить эту проблему, используя SMTP-сервер. Обычно хостинговые компании предоставляют свой собственный SMTP-сервер, который вы можете использовать для отправки электронных писем на ваш сайт.
В качестве альтернативы вы можете использовать другие SMTP-серверы, такие как Gmail, Mailjet и т.д. Все это требует основных сведений о SMTP-сервере, таких как хост, порт и т.д.
При этом давайте посмотрим, как использовать SMTP-сервер для отправки электронных писем WordPress.
PHPMailer в WordPress
WordPress включает в себя класс PHPMailer в своем ядре. Если вы хотите проверить это, вы найдете этот файл в папке wp-includes/PHPMailer/PHPMailer.php
.
Если мы настроим PHPMailer в WordPress, wp_mail
функция будет отправлять электронные письма через этот класс PHPMailer. В этом случае wp_mail
способ не зависит от настроек хостинга. Вместо этого они используют настройки вашего SMTP-сервера.
Я собираюсь использовать этот класс PHPMailer для писем. Поскольку этот класс уже включен в WordPress, нам не нужно отдельно устанавливать библиотеку PHPMailer.
Можно использовать плагин WP Mail SMTP, который также отправляет электронные письма с помощью SMTP-серверов. Но я всегда рекомендую, если что-то достижимо, написав небольшой фрагмент кода, сделайте это. Рекомендуется использовать как можно меньше плагинов. Использование большего количества плагинов на веб-сайте увеличивает дополнительную нагрузку на сервер. Иногда плагины конфликтуют друг с другом, что может привести к поломке сайта.
Отправить электронную почту WordPress через SMTP-сервер
Прежде чем продолжить, вы должны быть готовы указать свои данные SMTP, такие как хост, порт, имя пользователя и пароль.
Если вы планировали использовать SMTP-сервер Gmail, вам необходимо изменить некоторые настройки в своей учетной записи Google. Для этого войдите в свою учетную запись Google и нажмите «Учетная запись». Как только вы перейдете на страницу учетной записи, нажмите «Безопасность». Прокрутите вниз, и вы найдете настройки «Небезопасный доступ к приложениям». Установите его в положение ВКЛ.
Для настройки PHPMailer в WordPress есть ловушка phpmailer_init. Используя phpmailer_init
ловушку, мы можем получить доступ к объекту PHPMailer и установить для него аргументы.
Откройте файл активной темы functions.php
и поместите приведенный ниже код в конец файла.
add_action( 'phpmailer_init', 'set_phpmailer_details' );
function set_phpmailer_details( $phpmailer) {
$phpmailer->isSMTP();
$phpmailer->Host = 'YOUR_SMTP HOST';
$phpmailer->SMTPAuth = true;
$phpmailer->Port = 'SMTP_PORT'; //25 or 465
$phpmailer->Username = 'SMTP_USERNAME';
$phpmailer->Password = 'SMTP_PASSWORD';
$phpmailer->SMTPSecure = 'ssl'; //ssl or tls
}
Обязательно замените заполнители фактическими значениями. Допустим, мы используем SMTP-сервер Gmail, тогда наш код будет записан следующим образом:
add_action( 'phpmailer_init', 'set_phpmailer_details' );
function set_phpmailer_details( $phpmailer) {
$phpmailer->isSMTP();
$phpmailer->Host = 'smtp.googlemail.com'; //gmail smtp host
$phpmailer->SMTPAuth = true;
$phpmailer->Port = 465;
$phpmailer->Username = 'GMAIL_USERNAME';
$phpmailer->Password = 'GMAIL_PASSWORD';
$phpmailer->SMTPSecure = 'ssl';
}
Вам необходимо передать фактическое имя пользователя и пароль вашей учетной записи Gmail в приведенном выше коде. Теперь попробуйте отправить электронное письмо со своего веб-сайта WordPress, электронная почта должна начать работать.
Отладка проблемы с электронной почтой
На данный момент, даже после использования PHPMailer ваши электронные письма не работают, тогда с помощью wp_mail_failed
действия вы можете выяснить причину проблемы. Используйте приведенный ниже код для устранения проблемы.
add_action('wp_mail_failed', 'log_mailer_errors', 10, 1);
function log_mailer_errors( $wp_error ){
$fn = ABSPATH. '/mail.log'; // say you've got a mail.log file in your server root
$fp = fopen($fn, 'a');
fputs($fp, "Mailer Error: ". $wp_error->get_error_message() ."n");
fclose($fp);
}
Надеюсь, вы понимаете, как отправлять электронные письма WordPress с помощью SMTP-сервера. Пожалуйста, поделитесь своими мыслями и предложениями в разделе комментариев ниже.
Статьи по Теме
- Отправка электронной почты с помощью SMTP-сервера Gmail из сценария PHP
- Отправка электронной почты через SMTP-сервер Gmail в Laravel
- Отправка электронной почты с помощью Mailjet на PHP