WEB и WordPress новости, темы, плагины. Здесь мы делимся советами и лучшими решениями для сайтов.

Как отправить электронную почту WordPress с помощью SMTP-сервера

558

У вас проблемы с отправкой писем в 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 и нажмите «Учетная запись». Как только вы перейдете на страницу учетной записи, нажмите «Безопасность». Прокрутите вниз, и вы найдете настройки «Небезопасный доступ к приложениям». Установите его в положение ВКЛ.

Как отправить электронную почту WordPress с помощью SMTP-сервера

Для настройки 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-сервера. Пожалуйста, поделитесь своими мыслями и предложениями в разделе комментариев ниже.

Статьи по Теме

Источник записи: artisansweb.net

Этот веб-сайт использует файлы cookie для улучшения вашего опыта. Мы предполагаем, что вы согласны с этим, но вы можете отказаться, если хотите. Принимаю Подробнее