Wordpress не отправляется почта. Настройка e-mail и его функций в WordPress. Как настроить подключение SMTP

Один из основных «компонентов» любого веб-приложения – это возможность посылать почтовые сообщения — е-мейл.

Однако это не означает, что каждое приложение использует свой собственный почтовый клиент. (Хотя люди, конечно, создают свои).

Приложения отправляют письма на электронный ящик, когда пользователь регистрируется, меняет пароль, в системе происходят какие-то изменения и т.д. В общем, когда происходит что-то такое, о чем владелец сайта хочет уведомить посетителей.

Понятие E-mail

Перед тем, как мы углубимся в то, что WordPress API может предложить для отсылки писем, редактирования их настроек и подобных вещей, важно знать пару важных моментов об e-mail.
А именно, важно понять, как работают компоненты, которые создают само письмо, а это нечто большее, чем только адрес, тема и содержание. Существуют некоторые технические нюансы, которые следует уяснить, прежде чем приступать к созданию собственных писем.

«Шапка» электронного письма содержит минимум информации: от кого и кому письмо было отправлено. Также можно встретить и другие сведения. Например, время, когда письмо было послано или получено.

Когда мы работаем с программой WordPress, отправитель письма назначается по умолчанию. Если он не указан, то адрес отправителя принимает вид «wordpress@domain . com »

Если вы хотите установить другой адрес «ответа», например «[email protected] », то такая возможность доступна в настройках.

Лучше всего работать с оглавлениями, используя массивы.

Тип MIME

Когда придет время указывать формат отправки письма, вы, вероятно, увидите два альтернативных формата:

  • Plain text

Вы привыкли видеть HTML в большинстве современных e-mail клиентов, однако, если у вас упрощенный клиент, или он настроен на отображение только обычного текста, или вы читаете письмо на дисплее старого телефона, то содержимое будет отображаться в Plain text.

Программа WordPress соответственно позволяет отправлять письма как в формате HTML, так и в формате Plain Text.

После того, как мы взглянем на пример, где показано, как программно отправлять электронные письма, нами будет тщательно изучено все происходящее. Вкратце, существует определенный «хук», который значительно все упрощает, однако мы не увидим его в действии, пока не разберемся со всеми необходимыми фрагментами письма.

Вложения (Attachments)

Как известно, вложением является любой файл, прикрепленный к основному письму, отправленный получателю вместе с текстом.

Дело в том, что существуют некоторые нормы и правила отсылки электронного письма с вложением, и они не обязательно предусмотрены в приложении. Вместо этого, сервера, почтовые клиенты устанавливают свои ограничения на определенные виды входящих файлов.

Например:

  • Некоторые клиенты не допускают отправку/получение файлов формата ZIP и EXE (т.е. архивы и исполнительные файлы)
  • Большинство сервисов имеют лимит по размеру прикрепленного файла.
  • Определенные типы писем могут быть помечены как спам автоматически (основываясь на вложениях и содержимом тексте)

Разумеется, правила изменить мы не можем. Но стоит знать ограничения тех, кому мы отправляем письма, и оставаться в установленных рамках. Но не стоит волноваться! Отправить е-мейл в соответствии с данными условиями и заданными целями в программе WordPress не составит труда!

Возможно, вам и не потребуются вложения, но и не исключено, что вы захотите прикрепить к письму один или даже несколько дополнительных файлов. В программе это можно реализовать как с помощью строки, так и с помощью массива. Однако мы не будем рассматривать этот случай прямо сейчас, но мы обязательно затронем его, когда будем разбираться с примером.

«Кому», «Тема», «Сообщение»

В большинстве случаев e-mail состоит из трех основных пунктов: «кому» (адрес электронной почты получателя), «Тема» и «Сообщение» (основной текст).

В WordPress достаточно легко работать с данной информацией. Достаточно всего лишь обеспечить каждую «графу» своей строчкой.

Разумеется, если вы хотите отправить сразу несколько писем, то можно как повторять отсылку е-мейла желаемое количество раз, отправляя по одному письму каждому пользователю, так и использовать массив из адресов получателей в WordPress Mail API , тогда письмо отправиться всем, кто был включен в этот массив.

И запомните! Если вы хотите изменить стандартный reply - to (ответный) адрес на свой, загляните в «Оглавление».

Использование WordPress Email API

Мы рассмотрели все основные моменты и готовы приступить к основной части статьи, а то есть, к изучению WordPress Email API.

Если разобраться, весь функционал по этой теме сосредоточен в функции wp_mail, однако существуют еще некоторые «хуки», о которых нам тоже следует знать, если мы хотим использовать все преимущества системы.

Основные «Хуки»

  • wp _ mail _ content _ type позволяет установить тип MIME исходящего письма
  • wp _ mail _ from – это фильтр, с помощью которого можно установить электронный адрес отправителя, не прибегая к массиву $headers .
  • wp _ mail _ from _ name – фильтр с аналогичной функцией, но для указания имени отправителя (также без использования массива $headers.)
  • wp _ login – Хук, который мы будем использовать для демонстрации, посылая е-мейл человеку, когда тот авторизируется в приборной панели WordPress.

Для полноты картины, я поделюсь своим кодом ниже, и вы сможете увидеть все, что мы сейчас разобрали, в действии, тем самым изучить, как это все работает.


"; $message .= "Your account has been created. Your login information is below:"; $message .= "
"; $message .= "

    "; $message .= "
  • Username: " . $input["email-address"] . "
  • "; $message .= "
  • Password: " . $password . "
  • "; $message .= "
"; $message .= "
"; $message .= "You can login to the application here."; add_filter("wp_mail_content_type", create_function("", "return "text/html";")); add_filter("wp_mail_from", "acme_mail_from"); add_filter("wp_mail_from_name", "acme_mail_from_name"); wp_mail($input["email-address"], "Your Acme Account Has Been Created!", $message, array()); } function acme_mail_from($email) { // NOTE: replace with @. This was causing problems with the syntax highlighter. return "donotreplyacme.com"; } function acme_mail_from_name($name) { return "The Acme Company"; }

< ? php

function acme_email_individual ($ input ) {

* Note: assume that $input has keys for "email-address".

// Generate the password

$ password = wp_generate_password (12 , false ) ;

// Email the user that they"re profile was created

$ message . = "

" ;

$ message . = "Your account has been created. Your login information is below:" ;

$ message . = "
" ;

$ message . = "

    " ;

    $ message . = "

  • Username: " . $ input [ "email-address" ] . "
  • " ;

    $ message . = "

  • Password: " . $ password . "
  • " ;

    $ message . = "

" ;

$ message . = "
" ;

add_filter ("wp_mail_content_type" , create_function ("" , "return "text/html";" ) ) ;

add_filter ("wp_mail_from" , "acme_mail_from" ) ;

// Generate the password = Генерируем пароль

// Email the user that they"re profile was created = Отправляем письмо пользователю, аккаунт которого был создан

// NOTE: replace with @. This was causing problems with the syntax highlighter = Обратите внимание! Надо замените [ at ] на «@». (Это бы вызывало проблемы с выделением синтаксиса)

Разбор кода должен все прояснить. После написания основной информации мы, используя плюсы предусмотренных в программе «хуков», создаем «strings» (строки) как аргументы и, в конце концов, вызываем саму функцию wp_mail .

Однако заметьте, что мы допускаем использование пустых массивов для некоторых аргументов $headers . А все потому, что у нас есть пользовательский фильтр для указания «From Name »(Имени отправителя) и “From Address ”(Адреса отправителя)

Этот метод не является однозначно лучше, чем альтернативный. Однако теперь мы видим, что существует несколько способов осуществить поставленную задачу.

Стандартная отправка почты в WordPress осуществляется с помощью почтового сервера хостинг провайдера с помощью функции mail. Однако не все хостинг провайдеры включают использование этой функции.

К счастью, есть выход из этой ситуации – использование стороннего SMTP сервера.

Для того чтобы использование стороннего SMTP сервера стало возможным нужно установить соответствующий плагин.

В статьях в интернете обычно советуют использовать Configure SMTP (есть даже подробные инструкции по его использованию), но, на момент написания данной статьи, этот плагин уже 4 года не обновлялся и, следовательно, не тестировался на последней версии WordPress. Поэтому, если нет желания рисковать, тестируя плагин самостоятельно, лучше поискать альтернативу. Например, плагин Postman SMTP Mailer/Email Log

Устанавливается этот плагин самым обычным способом либо через админпанель WordPress либо путём скачивания zip-архива и его последующей распаковки в директорию wp-content/plugins.

После установки плагина появляется удобная панель управления.

Она позволяет:

  • Выполнить настройку плагина, в частности SMTP,
  • Отправить тестовое письмо по email (Send a Test Email);
  • Сбросить настройки плагина («Delete plugin settings»);
  • Проверить возможность соединения с заданным при настройке SMTP сервером («Run a Connectivity Test»);
  • Получить техническую информацию для диагностики проблем (для специалистов)(«Diagnostic info»);
  • Обратиться за поддержкой к разработчикам плагина («Online Support»);
  • Просмотреть список отправленных сообщений, если включена соответствующая опция («View the log»).

Одна из особенностей этого плагина, возможность настройки SMTP в режиме мастера (кнопка «Start the Wizard»). Это будет большим плюсом для тех, кто испытывает трудности с настройкой технической части.

На первом шаге нужно ввести email, с которого будет отправляться почта с сайта и имя отправителя.

На следующем шаге необходимо указать имя SMTP сервера, который будет использоваться. Например, smtp.mail.ru (если используете эту почту).

После этого плагин автоматически проверит доступность SMTP сервера.

И если проверка проходит успешно, можно остаётся только ввести имя пользователя и пароль.

Следует отметить, что в режиме мастера, плагин автоматически определяет порт, к которому следует подключиться и тип соединения (защищённое или нет).

Также можно выполнить все настройки вручную. К слову, в ручном режиме доступно больше настроек.

На вкладке Account выполняется настройка SMTP. Помимо тех настроек, что были доступны в режиме мастера, также можно задать порт, тип аутентификации и даже изменить протокол. Однако последнее актуально только для пользователей почтового сервиса Gmail, так как в качестве альтернативы поддерживается только Gmail API.

На вкладке «Message» указывается адрес электронной почты, с которого будут отправляться письма и имя отправителя.

Остальные параметры не обязательны и при отсутствии необходимости их можно не указывать.

Вкладка «Logging» предназначена для настройки списка письма. Можно включить или отключить ведение списка («Enable Logging»), задать максимальное количество эле6ментов списка («Log Entries Limit», по умолчанию 10) и максимальное количество строк в описании технической информации о письме(«Transcript Size», по умолчанию 128).

Список отправленных писем (если включено его ведение)можно посмотреть перейдя по ссылке «View the log» на панели управления плагином.

Вкладка «Advanced» предназначена для настроек TCP соединения («Network Settings», лучше оставить значения по умолчанию), работы с журналом PHP («PHP Log Level», тоже лучше оставить по умолчанию) режима доставки писем («Delivery mode») и режима повышенной конфиденциальности («Stealth mode»).

Про режим доставки необходимо сказать особо. Должно быть обязательно выставлено значение «Log Email and Send». В противном случае письма просто не будут отправляться.

В заключение необходимо отметить один, надеюсь, очевидный нюанс. Какой бы Вы ни выбрали плагин для работы с SMTP, никогда не используйте рабочий email. Лучше потратить всего лишь на всего две минуты времени и завести новую почту специально для этих целей.

Если вы на своём сайте активно используете email, а именно формы обратной связи, например, Contact Form 7 , форумы с рассылкой сообщений или иные социальные плагины, то наверняка часто сталкивались с такой проблемой, как пропадание писем, попадание их в спам и т.д. Как этого избежать, поговорим далее.

Почему email не доставляются и пропадают

Письма могут пропадать в силу нескольких причин. Первая и самая главная — ваш email приняли за спам. Любой серьёзный почтовый сервис имеет свой мощный антиспам-модуль c эвристическим анализом содержимого email, не говоря уже о чёрном списке адресов. Поэтому, не переусердствуйте с рассылкой, чтобы не попасть в чёрный список спамеров.
Также, в спам попадут не подписанные электронной подписью письма. То есть, любой может отправить фишинговое письмо, скажем, от имени , однако, это будет безуспешно, т.к. отправитель вряд ли сможет подтвердить, что оно было отправлено с этого адреса. Для проверки легитимности используются подписи DKIM (DomainKeys Identified Mail) и SPF (Sender Policy Framework) записи.

Что сделать, чтобы письма доходили до адресата

Не переусердствуйте с рассылкой и настройте свой SMTP-сервер, чтобы исходящие email подписывались DCIM- и SPF-подписями. Вы можете настроить свой SMTP сервер, но чтобы не заморачиваться с настройкой, можно привязать домен к Яндекс.ПДД или Google Apps for Business и отправлять email через их сервис, и тогда все нужные заголовки будут прописываться автоматом. Но тут есть 2 оговорки

  1. Ваш хостинг-провайдер должен разрешать исходящие соединения, чтобы была возможность подключиться к внешнему SMTP серверу
  2. Объём рассылки не превышает 2000 писем в день. Это лимит Google, у Yandex вряд ли больше

Если вы укладываетесь в вышеуказанные рамки, тогда вперёд, настроим подключение

Как настроить подключение SMTP

Чтобы настроить нормальную отправку писем, нужно установить плагин WP Mail SMTP . Он позволяет переконфигурировать стандартный PHP Mailer так, чтобы была возможность подключаться к SMTP серверу. Также, советую использовать его, если вы пользуетесь локальным сервером.

Настройка будет происходить под Яндекс. Гугл отметается, так как теперь там нет бесплатных тарифов

Настройка WP Mail SMTP


А вот описание опций

  • From Email — email отправителя. Вводим логин от почты полностью как на изображении вверху
  • From Name — Имя отправителя. Можете поставить сюда что хотите, например, адрес вашего сайта
  • Mailer — выбираем Send all WordPress emails via SMTP
  • Return Path — оставляем пустым
  • SMTP Host — адрес SMTP сервера. Вводим smtp.yandex.ru
  • SMTP Port — порт SMTP сервера. Вводим 465
  • Encryption — тип шифровки писем. Вводим Use SSL encryption
  • Authentication — авторизация. Выбираем Yes: Use SMTP authentication
  • Username — логин от почты. Значение должно совпадать с From Email

    Настройка Contact Form 7

    Допустим, мы зарегистрировали email и внесли его в настройки WP Mail SMTP , тогда его нужно прописать в форме Contact Form 7 в разделе Письмо в поле От кого :

    Не обращайте внимания на ошибку: Электронный адрес отправителя не принадлежит домену сайта. , email будут отправляться верно с этого адреса.

    Установка и настройка почтового сервера

    Если лимиты внешнего SMTP-сервера не устраивают, можно использовать свой серверный вариант: установить Postifx или Sendmail. Оба отвечают за работу с email, в частности, их отправку и пересылку.

    Установка происходит с помощью введения команд в . Инструменты: или putty. Если работа не под root , не забываем перед командами давать sudo

    Установка Postfix

    apt-get update && apt-get install postfix

    В процессе установки будут заданы вопросы относительно настройки. Важно выбрать тип Internet Site . Это необходимо сделать для того, чтобы Postfix сгенерировал файл main.cf и сразу начал работу. В противном случае, Вам необходимо будет настраивать его вручную.

    Установка Sendmail

    Sendmail устанавливается примерно так же

    Apt-get update && apt-get install sendmail

    Потом его сконфигурировать

    Sendmailconfig

    После всего этого перезагрузить сервер

    Что делать, если email не доходит

    1. Проверить правильность адреса, куда почта должна придти;
    2. Проверить папку Спам ;
    3. Выждать пару минут.

    Если по истечению времени письмо таки не дошло в почтовый ящик, хотя плагин просигнализировал об успешной отправке сообщения, возможно, хостинг не настроен должным образом.
    Возможно, php просто не может отправлять письма.

сайт 03.02.2018

Доброго времени суток!

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

Подключив ваш сайт к Яндекс ПДД или иному серверу отправки почты, дело останется за малым – настроить ваш сайт таким образом, чтобы все письма отправлялись исключительно через SMTP. Давайте посмотрим, как это просто сделать в WordPress.

Настраиваем отправку всех писем с сайта под управлением WordPress через указанный SMTP

Для этого мы воспользуемся весьма лёгким и крайне простым плагином, который выполняет основную задачу – заставляет все письма отправляться не через стандартный PHPMailer, а указанный SMTP.

Данный Вордпресс плагин называется Easy WP SMTP – он находится в официальном репозитории плагинов на WordPress и заслуженно является самым лёгким (его размер порядка 78 килобайт) и весьма популярным. Более 200 тысяч пользователей выбрали Easy WP SMTP .

Не последнюю роль в популяризации данного плагина сыграла ситуация, когда его конкурент в лице WP Mail SMTP был выкуплен некой компанией, которого в итоге из компактного плагина сделала монстра с не нужным 98% пользователям дополнительным функционалом и уже по традиции напичкала его рекламой и «выгодными» предложениями.

Вернёмся к плагину Easy WP SMTP. Установив его стандартным способом через консоль WordPress, зайдите в его настройки. Это делается через меню консоли Настройки -> Easy WP SMTP

Там имеется несколько вкладок:

  • SMTP Settings – здесь указываются настройки SMTP сервера почты
  • Additional Settings – опции для разработчиков, так ничего менять не надо
  • Test Email – отправка письма, дабы протестировать корректность настройки SMTP

Нас интересует вкладка с настройками. На приведённом изображении приведены типовые настройки, что указываются для SMTP сервера Яндекс ПДД.

Фактически всё весьма интуитивно, вопросы может вызвать лишь опция Force From Name Replacement – если стоит галочка, то в приходящих письмах в поле Отправитель будет указан всегда чуть выше вписанный текст. Если же галочки нет и сообщение, к примеру, написано из контактной формы, то в поле Отправитель указывается Имя, что было указано в контактной форме при написании сообщения.

На этом всё. Желаю удачи в подключении вашего сайта к Яндекс ПДД или аналогичного SMTP сервера и настройке оправки писем через него с вашего WordPress сайта.

Пожертвование сайту сайт (cбор пожертвований осуществляется через сервис Яндекс Деньги)

Я уже как-то писал о том как минуя серверный sendmail . На днях, в очередной раз столкнувшись с адскими серверными лимитами виртуального хостинга Ру-центра, снова оказался в поисках обходных путей.


На сей раз шаблон по ряду причин оказался не совсем готов к работе с WP Mail SMTP о котором шла речь ранее. Поэтому, я решил пойти иным путем и попробовать рекомендуемый многими плагин Configure SMTP , который по-сути решает аналогичную задачу - отправляет всю почту из WordPress через внешний или внутренний SMTP-сервер.

Я не знаю существует ли русская локализация этого плагина, ее поисками я не занимался, т.к. не вижу острой необходимости. Внешне данный плагин никак себя не проявляет, в настройки сводятся к самому минимуму и выглядят следующим образом. Картинка кликабельна.

Как видно на скрине - ничего сложно нет. Я думаю, на английском плагин будет настроить даже проще. Ну, а кому сложно, я кратко пробегусь по всем пунктам.

  • Send e-mail via Gmail? Если вы хотите использовать SMTP-сервер Гугла, ставьте галочку, и все настройки пропишутся автоматически. Без логина и пароля, разумеется.
  • SMTP host . Собственно, адрес SMTP-сервера. Например, в Ру-центре он mail.nic.ru, в Яндексе - smtp.yandex.ru. Адрес SMTP-сервера вы должны выяснить непосредственно у своего почтового сервиса.
  • SMTP port . Порт SMTP-сервера, как правило, указывается вместе с его адресом. Обычно это 25, 587, 465, 475 или 2525-й порт.
  • Secure connection prefix . Метод подключения аналогично нужно выяснить у своего почтового сервиса. В Ру-центре, например, нет никакой безопасности, поэтому данное поле оставляем пустым. В Google ставим SSL.
  • Use SMTPAuth? Нужно поставить галочку, если ваш SMTP-сервер требует авторизацию. Она нужна практически во всех почтовых сервисах.
  • SMTP username/SMTP password . Я думаю это понятно всем - логин и пароль доступа к SMTP-серверу.
  • Wordwrap length . Установка переноса слов. Понятия не имею кому это нужно.
  • Enable debugging? Включаем или выключаем дебаггер. Обычно нужно на этапе на разработки для отлова багов.
  • Sender e-mail/Sender name . Понятно и без перевода - это имя и адрес, которые будут фигурировать в качестве отправителя письма.

После того как все настройки введены, я настоятельно рекомендую вам протестировать работу плагина, нажав на кнопку «Send test e-mail». Если все сделано верно - вам придет письмо. Если письма нет - ищите ошибку в настройках. Плагин полностью рабочий и протестирован мною на WordPress 3.7.1 и локальном SMTP-сервере Ру-центра.

  • Сергей Савенков

    какой то “куцый” обзор… как будто спешили куда то