Wp_mail() — Отправляет письмо на почту. Похожа на mail() в PHP. Функция WordPress. Не отправляется почта из WordPress и не работает визуальный редактор — решение с помощью плагинов Configure SMTP и Post Editor Buttons Отправка почты с вложением wordpress

Я уже как-то писал о том как минуя серверный 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-сервере Ру-центра.

Стандартная отправка почты в 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. Лучше потратить всего лишь на всего две минуты времени и завести новую почту специально для этих целей.

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

Вот сегодня я и хочу рассказать о парочке таких плагинов. Один из них реализует функцию отправки почты (называется Configure SMTP), а второй позволяет расширить возможности имеющегося в Вордпрессе Html редактора (Post Editor Buttons), для случая, если у вас по каким-либо причинам не работает визуальный.

Проблема отправки писем из WordPress и настройка почты

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

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

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

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

Дело в том, что он реализует подписку на новые комментарии в WordPress и использует для отправки писем именно встроенный в Вордпресс механизм — функцию Php Mail, которая на новом хостинге имела проблемы с работоспособностью.

К тому времени у меня уже был опыт решения подобных , и я предполагал найти сходные настройки и в админке WordPress. Но, к сожалению, решение данной проблемы разработчиками движка было отдано на откуп разработчикам плагинов.

Таковых оказалось довольно много, но попробовав некоторые из них я все же остановил свой выбор на Configure SMTP. Он просто подкупает простотой настройки, а если в качестве транзитного E-mail , то вообще все сводится к тому, чтобы в его настройках указать название почтового ящика и пароль для доступа к нему.

Но обо всем по порядку. Сначала вам нужно будет скачать Configure SMTP, а затем установить его по хорошо отработанной стандартной схеме:

  1. Распаковываете архив
  2. Копируете папку configure-smtp посредством FTP в директорию: /wp-content/plugins
  3. Заходите в админку, выбираете из меню пункт «Плагины», переходите на вкладку «Неактивные», находите строчку с плагином Configure SMTP и щелкаете по кнопке «Активировать»

А памятуя о безопасности основного вашего E-mail и возможных последствиях проникновения в него, лениться с созданием нового ящика не стоит, во избежании проблем, которые возникли, например, у меня после несанкционированного доступа к моей почте, которые я описал в .

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

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

Настройки плагина Configure SMTP

Для этого в админке выберите пункты «Параметры» — «SMTP»:

Если вы используете Гмайл, то вам достаточно будет поставить галочку в поле «Send e-mail via GMail», а затем ввести название ящика в поле «SMTP username» и пароль к нему в поле «SMTP password». Все, сохраняйте настройки и тестируйте работоспособность отправки писем из Вордпресс с помощью расположенной в самом низу кнопки «Send test e-mail».

После щелчка по ней в самом верху окна настройки появится сообщение о том, что вам отправлено тестовое сообщение (Test e-mail sent). Далее вы должны будете проверить наличие тестового письма в почтовом ящике администратора блога, который был вами указан в общих настройках WordPress в поле «Адрес e-mail» («Параметры» — «Общие»).

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

А тот почтовый ящик сервиса Gmail, пароль к которому вы вводили в настройках плагина, является всего лишь транзитным звеном, и там вашего тестового письма не будет. Он нужен лишь для реализации отправки почты с WordPress через SMTP, при возникновении проблем с работой стандартного варианта (функции Php Mail).

Давайте пробежимся по остальным настройкам плагина Configure SMTP, хотя они и не особо важные. Если вы использовали для трансляции почтовый ящик отличный от Гмэйл, то галочку в поле «Send e-mail via GMail» вам ставить не нужно, но зато потребуется кроме указания емайла и пароля к нему, еще указать и другие параметры, присущие этому почтовому сервису в полях со второго по пятое.

Далее в поле «Wordwrap length» можете указать количество символов, которое нужно будет ввести в письме до возникновения переноса строки, а в полях «Sender e-mail» и «Sender name» можете указать, какой Емайл будет указан в качестве обратного в полученном пользователем письме, а так же, что будет отображаться в поле «От кого» в данном письме. Если эти поля не заполнять, то будет взята информация из общих настроек WordPress.

Post Editor Buttons — добавить кнопки в редактор Вордпресса

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

Но кроме визуального редактора в админке имеется и обычный Html редактор, обладающий минимальным функционалом, но вполне работоспособный. Ну, а после того, как я узнал о существовании и установил на свой блог плагин Post Editor Buttons, расширяющий его возможности, то потребность в поиске решения проблемы с визуальным редактором исчезла вовсе.

Теперь можно переходить к его настройке («Параметры» — «Post Editor Buttons»), а точнее к добавлению новых кнопок в базовый редактор Вордпресса.

Делается это очень просто. Сначала вам нужно щелкнуть по ссылке «New», расположенной в самом низу окна (почему-то она сделана не очень заметной).

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

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

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

Можно вообще не использовать закрывающий тег при создании кнопочки. Такой пример вы можете видеть в двух нижних строках все того же скриншота. С помощью этих двух кнопок в редакторе я вставляю в тексты статей изображения.

Первая служит для вставки изображений размером в полную ширину страницы (заранее подгоняю картинки под этот размер) и по нажатию на нее, в то место где был расположен курсор мыши, будет вставлен Html тег картинки следующего вида:

Мне останется только загрузить по FTP нужное изображение в папку «image», прописать название графического файла в этом коде (заместо 25.10.png), ну и исправить содержимое атрибутов «alt» и «title» на то, что подходит выводимому изображению по смыслу. Например, все тот же пресловутый скриншот, расположенный выше, выводится по следующему коду:

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

Удачи вам! До скорых встреч на страницах блога сайт

Вам может быть интересно

Comment Toolbar - добавляем в комментарии WordPress возможность ответа и цитирования
Подсветка кода и кнопки форматирования комментариев в WordPress - SyntaxHighlighter и Comment Form
Simple Counters и Category and Page Icons - красивые счетчики RSS и Twitter, а так же иконки для категорий и страниц в WordPress
Google XML Sitemaps - создание карты сайта для WordPress Как в плагине Yet Another Related Posts убрать прозрачный пиксель http://yarpp.org/pixels и изменить надпись Похожие материалы
WP-PageNavi - постраничная навигация для блога на WordPress — установка, настройка и изменение внешнего вида пагинации
Создание в WordPress карты блога для посетителей (плагины Sitemap Generator и WP DS Blog Map)
Subscribe To Comments для WordPress - подписка на комментарии к статьях в Вордпресс
Галерея для WordPress на основе плагина NextGEN Gallery - создание и вывод фотогалерей и слайдшоу в статьях
Calendarize it! - Календарь мероприятий для WordPress
Better Feed для WordPress - как не отдавать в RSS полные тексты постов и защититься от воровства контента через новостной канал

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

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

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

Понятие 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 ”(Адреса отправителя)

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

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

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

В большинстве случаев решением может стать отправка писем через сторонние сервисы, например Gmail или Яндекс почта для домена (ПДД). Также можно настроить отправку писем через ваш собственный почтовый сервер, который, как правило, есть даже на самом простом веб-хостинге.

Минусы отправки писем через системный транспорт

Как было отмечено выше, отправка писем в WordPress, по умолчанию, работает без дополнительных настроек, но цена этому весьма высока.

Письма могут попадать в спам

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

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

Отправка писем через почтовый сервис позволит автоматически добавлять DKIM-подписи, свидетельствующие о надежности и легитимности отправителя. Отправляющие сервера (SMTP-серверы) Яндекс Почты и Gmail автоматически добавляют DKIM-подписи к каждому письму. С ними лишь владелец домена (и закрытого ключа DKIM) может отправлять письма с верными DKIM-подписями.

DKIM-подписи не отменяют того, что кто-то другой сможет отправить письмо используя ваш адрес (admin@сайт), но принимающий почтовый сервер будет видеть, что письмо отправил кто-то другой, а не владелец домена.

SPF-записи устанавливаются в настройках домена (DNS) и позволяют владельцу домена показать почтовым сервисам с каких серверов могут отправляться письма этого домена. Каждый почтовый сервис предлагает свою собственную SPF-запись со своим списком серверов. Если вы отправляете письма через Яндекс почту и делаете рассылки через Mailchimp, то необходимо совместить их SPF-записи в одну.

Письма могут пропадать

Еще один прием, который используется почтовиками для отсеивания плохих писем — это Greylisting. Здесь, в момент отправки письма, получающий сервер может ответить вашему сайту что-то вроде «я сейчас занят, зайди с этим письмом минут через десять». Сайт не знает что делать в таком случае — письмо было передано для отправки, на этом все, поэтому отправляемое письмо просто пропадет и не будет доставлено адресату.

Если ваше письмо отправляется почтовым сервисом, то ваш отправляющий сервер скажет «окей, гугл», отложит письмо в очередь неотправленной почты и будет пытаться доставить его еще несколько раз. Расчет прост — при отправке огромного количества почты за короткий промежуток времени, как это обычно делают спамеры, нет времени пытаться доставить письмо несколько раз.

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

Отправка писем через SMTP

Принципиальной разницы между отправкой через внешний почтовый сервис (Яндекс Почта, Gmail) или свой собственный SMTP-сервер нет. Это одно и тоже. Но если вы решили использовать свой собственный или выделенный хостингом SMTP-сервер, следует внимательно отнестись к его настройкам. Не забудьте установить правильные DKIM- и SPF-записи в настройках домена.

Google и Яндекс не запрещают отправку писем через свои сервера подобным образом, но имеют некоторые ограничения на количество отправляемых сообщений в день. Например, Gmail имеет явно указанное ограничение в 2000 писем в день . Яндекс не сообщает конкретных цифр, а служба поддержки намекнула, что этот показатель динамический.

Заметим, что на многих хостинг-площадках подключения к внешним серверам блокируются (информацию можно получить в поддержке хостинга или с помощью команды telnet). В этом случае можно попросить поддержку хостинга разрешить подключения. Иногда такие просьбы могут принять во внимание. Или использовать внутренний почтовый сервер предоставляемый хостинг-провайдером. Как правило, он будет работать даже быстрее, чем внешний, потому что обычно располагается на том же физическом сервере, что и ваш сайт (веб-сервер).

На личном опыте было замечено, что Яндекс Почта для домена не сохраняет письма отправленные через SMTP-сервер в папке исходящих сообщений, а Gmail сохраняет.

Плагин WP Mail SMTP

Все письма в WordPress отправляются с помощью функции wp_mail() , которая работает на популярной библиотеке PHP Mailer. Чтобы позволить WordPress и wp_mail() отправлять письма через SMTP-сервер необходимо установить и настроить плагин WP Mail SMTP из официальной директории WordPress.org.

Активировав плагин, перейдите в раздел Настройки → Email в панели управления.

Займемся настройкой на странице Advanced Email Options. Ниже указано описание и необходимые значения для каждого пункта.

From Email — адрес, с которого будут отправляться письма и на который получатель отправит ответ, нажав на кнопку «Ответить» в своей почте.

From Name — имя отправителя, можно указать название сайта или свое имя и фамилию.

Mailer — отправка писем через системный транспорт (функция mail()) или через SMTP-сервер. Выбираем «Send all WordPress emails via SMTP».

SMTP Host — адрес SMTP-сервера. Можно узнать у службы поддержки или в справочном разделе. Для Яндекс Почты используйте smtp.yandex.ru , для Gmail — smtp.gmail.com .

SMTP Port — порт SMTP-сервера, зависит от типа шифрования (Encryption). Для Яндекс Почты и Gmail используйте порт 465 .

Encryption — тип шифрования. Для Яндекс почты и Gmail необходимо установить «Use SSL encryption».

Authentication — требуется ли выполнять авторизацию на почтовом сервере. Устанавливаем «Yes: Use SMTP authentication».

Username — логин от почты. Как правило, полный адрес почтового ящика, должен совпадать со значением, указанным в поле From Email.

Password — пароль от почтового ящика.

Сохранив настройки, можно отправить тестовое письмо. Для этого введите адрес своего ящика и нажмите кнопку «Send Test». На указанный адрес будет отправлено небольшое письмо, а на экране появится служебная информация с результатами. Проверьте, пришло ли письмо на указанный адрес? Если нет, то что-то настроено неправильно и WordPress не сможет отправлять письма.

С помощью полученного тестового письма можно проверить корректно ли настроены DKIM и SPF. Для этого откройте исходный код письма. В Gmail это называется «Show Original». В Яндекс Почте «Свойства письма».

В заголовках письма должна содержаться строка «Authentication-Results». Если DKIM и SPF настроены правильно, то вы увидите spf=pass и dkim=pass .

Authentication-Results: mx.google.com; spf=pass (google.com: domain of [email protected] designates 2a02:6b8:0:1630::18 as permitted sender) [email protected]; dkim=pass [email protected]

Яндекс почта показывает зеленую галочку рядом с письмом, если DKIM-подпись верна.

Полезные материалы и заключение

Отправление писем через SMTP-сервер более надежный и правильный способ доставлять письма. Чтобы использовать SMTP не обязательно разбираться с настройкой и администрированием почтовых серверов. Сервисы Яндекса и Google хорошо справляются с поставленной задачей и для небольшого проекта это то, что надо.

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

В популярной системе управления хостингом cPanel настройки почты вынесены в раздел «Почта». На вкладке «Проверка подлинности электронной почты» можно управлять настройками DKIM и SPF.

  • Синтакс SPF-записей на официальном сайте.
  • Настройка DKIM-подписей и SPF-записей в Google Apps.
  • SPF для ПДД . DKIM-ключ для ПДД можно получить на странице настроек в Яндексе.