Проблема стандартной функции wp_mail() №1 – Почему вы не получаете уведомления
По умолчанию WordPress использует почтовую функцию PHP для отправки электронных писем, сгенерированных WordPress и для любых установленных плагинов, которые генерируют и отправляют почтовые сообщения с сайта, например, таких как WPForms, Contact From 7. Самая распространенная причина неполучения сообщений электронной почты заключается в том, что ваш сервер хостинга WordPress не настроен на использование функции почты PHP. Встречаются такие случаи, когда эту службу невозможно настроить “по-человечески”, или же слишком дешевый хостинг.
В дополнение к этому, усилия по защите от нежелательной почты почтовыми провайдерами также могут повлиять на ваши электронные письма. В рамках процесса фильтрации многие поставщики электронной почты будут проверять, отправляется ли ваша электронная почта из того же домена, что и в поле «Отправитель». Например, если ваша электронная почта заявляет, что она отправляется с вашего адреса Gmail, но фактически отправляется с сервера вашего сайта (а не с сервера Gmail), ваша электронная почта на все 100% будет отправлена в ??спам или вообще не будет доставлена.
Вы можете исправить это, используя SMTP вместо функции почты PHP. SMTP (Simple Mail Transfer Protocol) является отраслевым стандартом для надежной отправки электронных писем.
Давайте посмотрим, как настроить WP Mail SMTP для отправки писем из WordPress.
Зачем использовать WP Mail SMTP-плагин?
Основное преимущество использования плагина WP Mail SMTP заключается в том, что он позволяет безопасно отправлять электронные письма из WordPress с помощью учетной записи Gmail или G Suite, не требуя включения менее защищенных приложений в вашу учетную запись.
Кроме того, в отличие от многих других параметров SMTP, вам не нужно вводить имя пользователя и пароль Gmail на панели управления WordPress, где другие пользователи сайта могут их видеть. Используя этот метод, вы поможете защитить свой сайт WordPress.
Плагин WP Mail SMTP от WPForms – отправка почты WordPress через Gmail
Для начала Вам необходимо установить плагин WP Mail SMTP который в корне изменяет стандартную функцию отправки электронной почты WordPress, перестраивая функцию PHP wp_mail() для использования надлежащего SMTP-провайдера. В данном случае Gmail сервера.
Скачать плагин WP Mail SMTP от WPForms:
https://ru.wordpress.org/plugins/wp-mail-smtp/
И так предположим, что вы уже установили плагин и хотите настроить отправку сообщений непосредственно через джимейл почту. Естественно для этого вам для начала необходимо зарегистрировать новый Gmail аккаунт который по всей видимости должен использоваться только для отправки почты с вашего сайта. То есть я украдкой намекаю на то что должен быть создан совершенно новый почтовый ящик. На всякий случай подтвердите свое право на владение электронным ящиком при помощи мобильного телефона – безопасность не бывает лишней.
Подключение Gmail почты к плагину
После того как плагин был установлен и на странице плагинов Вы увидели его среди обилия уже имеющихся плагинов, кстати Вы его должны увидеть приблизительно вот так:
Вам необходимо перейти непосредственно к настройкам Gmail почты. Для этого наведите курсор мышки на пункт меню “Настройки” и кликните по пункту “WP Mail SMTP”:
Первым делом Вам нужно выбрать метод отправки почты, для этого про скрольте к строке ”Метод отправки почты” и среди методов выберите Google.
Кстати на всякий случай я рекомендую Вам прочесть официальную документацию по подключению Gmail почты от разработчиков плагина. Для ее прочтения Вам нужно либо перейти по данной ссылке на странице настроек в самом плагине:
Либо кликнуть по данной ссылке:
https://wpforms.com/how-to-securely-send-wordpress-emails-using-gmail-smtp/
Далее обязательно указываем почту удля отправки в полях “От (email)” и “От имени”:
В идеале я советую открыть Chrome в режиме инкогнито (просто нажмите Ctrl+Shift+N). И войдите в админку сайта для которого настраивается Gmail smtp. Плюс здесь же войдите в почту, через которую планируется отправка почты.
И уже после переходите к пункту ниже!
Подключение API приложения в console.developers.google.com
Перейдите по ссылке:
https://console.developers.google.com/flows/enableapi?apiid=gmail&pli=1
Далее выберите в выпадающем меню “Страна проживания” свою страну, отметьте “Нет” в пункте “Я хочу получать информацию о новых функциях, советы по повышению производительности, приглашения поделиться отзывом или поучаствовать в опросе, а также специальные предложения.”
Далее отметьте чек бокс в пункте “Условия использования”. В общем сделайте все как указано ниже:
После того как кнопка “Принять и продолжить” была нажата наберитесь терпения и подождите около 2-5 минут.
Не в коем случае не закрывайте и не перезагружайте страницу, процесс подключения API на самом деле происходит, просто он визуально не заметен.
На следующей странице нажмите кнопку “Создать учетные данные”:
После нажатия кнопки вы перейдете на данную страницу:
Здесь в пункте “Какой API вы используете?” в выпадающем меню выберите “Gmail API”, за тем в пункте “Откуда вы будете вызывать API?” выберите “Веб-сервер (например, node.js, Tomcat)”.
Отметьте в разделе “К каким данным вы будете обращаться?” отметьте “Данные пользователя” и последнее на данной странице что Вам необходимо будет сделать это нажать чудо кнопку “Выбрать тип учетных данных”.
Далее откроется страница “Учетные данные”:
“Учетные данные” как раз и есть та страница, при настройке которой у большинства пользователей возникают трудности и проблемы. Но сейчас я Вам все расскажу, на самом деле ничего сверх страшного здесь нет.
- В поле “Название” введите, например, название сайта, в моем примере это “MyWebSiteName”;
- В разделе “Разрешенные источники JavaScript” введите доменное имя вашего сайта;
- В разделе “Разрешенные URI перенаправления” введите ссылку которую Вам любезно предоставляет сам плагин, на странице настроек в данном пункте:
В моем примере это:
https://**ДОМЕННОЕ ИМЯ САЙТА**/wp-admin/options-general.php?page=wp-mail-smtp&tab=auth
- Далее нажимаем кнопку “Создать идентификатор клиента OAuth” и выдыхаем, но не сильно :).
Теперь Вам откроется страница “Добавление учетных данных”:
- В пункте “Адрес электронной почты” выберите почту через которую планируется отправка почты с сайта
- В поле “Название продукта, которое видят пользователи” введите любое название в моем примере это “MyWebSiteName”
- Далее жмем кнопку “Продолжить”.
После всех трудов перед Вами появится данная страница:
Здесь мы только жмем кнопку “Готово” так как предоставленных данных нам слишком мало. А вот после нажатия кнопки перед нами появится страница, из которой мы перейдем к нужным для работы плагина данным:
На этой странице нажмите на иконку с изображением карандаша. После Вы будете перенаправлены на страницу с возможностью скопировать “Идентификатор клиента” и “Секрет клиента”. Что собственно и делаем.
После того как нужные данные были скопированы нажмите кнопку “Сохранить” на этом все ужасы окончились, и мы переходим почти к заключительной части – “Волнующей” :).
Добавление идентификатора и секрета клиента в плагин WP Mail SMTP
Возвращаемся на страницу настроек плагина WP Mail SMTP. И вставляем соответствующие данные в нужные поля:
- В поле “Client ID” плагина вставляем данные из поля “Идентификатор клиента”;
- В поле “Client Secret” плагина вставляем данные из поля “Секрет клиента”;
- Жмем “Сохранить настройки”.
Далее Вам нужно разрешить плагину отправку почты. Для этого нажмите на кнопку “Разрешить плагину отсылать почту используя ваш Google аккаунт”:
После нажатия перед Вами откроется окно аутентификации от Google, здесь Вам нужно будет выбрать аккаунт Вашего почтового ящика для отправки почты:
После чего перед Вами откроется вот такое страшное окно с красивым знаком восклицания и устрашающей надписью: “Приложение не проверено”. Просто “забиваем” жмем на “Показать подробности (1)” и переходим по ссылке на страницу нашего приложения.
Далее мы попадаем на страницу входа нами созданного предложения. Здесь жмем “Разрешить“:
После нажатия на кнопку “Разрешить” Вы будете перенаправлена на страницу настроек плагина. И если Вы все сделали в предыдущих шагах правильно Вас обрадует своей зеленой полоской уведомление “Вы успешно связали ваш сайт с вашим проектом Google API. Теперь вы сможете посылать сообщения через Google.”
Проверка отправки почты через Gmail SMTP
Для проверки почты Вам необходимо перейти на вкладку “Проверка почты”:
Введите Email на который будет отправлено письмо и нажмите “Отправить Email”.
После отправки смотрим на оповещение системы оно должно быть с таким содержанием “Сообщение успешно отправлено!”:
Давайте глянем пришло ли письмо мне на почту:
Да! Все получилось, как нужно. Тело письма будет выглядеть вот таким образом:
На этом все! Отдыхаем, радуемся жизни. И будьте уверены если тестовое сообщение было успешно отправлено значит все письма, генерируемые как WordPress, так и плагинами точно будут отправлены через Gmail.
Решение проблем
В большинстве случаев для решения возникших проблем необходимо или подождать 15 минут что бы google обработал созданное нами ранее приложение в API. Или же дать доступ нашему приложению созданному в Google API к почте. Для этого перейдите по данной ссылке: https://myaccount.google.com/lesssecureapps?pli=1
Для предоставления доступа примените настройки указанные на скрине ниже:
Ошибка Error: invalid_request (Missing required parameter: client_id)
Данная ошибка связана с не верной генерацией линка плагином, при переходе на страницу приложения.
Для решения ошибки возьмите ссылку и место данного вида:
Вставьте ID Вашего приложения между id= и &. Должно получиться так (обращаем внимание на
113330086498-c82qmbamjgb3b1mdg4jhr0b22mcp61ld.apps.googleusercontent.com
):
Далее перейдите по исправленной ссылке, и все должно получится.