Публикуем в WordPress через e-mail

Наверняка все видели в административной части WordPress (Настройки - Написание) пункт настроек "Публикация через e-mail", а многие даже пытались настроить эту функцию. Я уверен, что у многих ничего в результате не получалось: так как настройка данной функции подразумевает дополнительные шаги настроек, да и каких-либо вразумительных инструкций в интернете о ее работе просто нету. Можете сами погуглить.

Как настроить публикацию в WordPress через e-mail и зачем это нужно? Собственно, сейчас попытаюсь обо всем рассказать!

Зачем нужна публикация через e-mail в WordPress?

В одной из своих прошлых публикаций, а именно "Пишем в Вордпресс используя Андроид" я описывал одну из возможностей писать посты в WordPress - там рассказывалось, как удаленно публиковать (используя лишь голос, распознанный вашим мобильным телефоном под управлением Андроид) новые записи в своем блоге прямо с телефона! Так вот, публикация через e-mail в WordPress - еще одна дополнительная возможность удаленной публикации новых материалов на сайт, когда, скажем, нет прямого доступа к редактору и административной части сайта.

Ходят упорно слухи, что данную функцию - публикацию через e-mail в WordPress собираются выключить из ядра движка. Тем не менее, даже в новой версии 4.0 она по-прежнему присутствует практически в своем первозданном виде, поэтому давайте разбираться в тонкостях ее работы.

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

Прежде всего, вы можете опубликовать статью для своих читателей лишь отправив письмо на специальный ящик электронной почты. Это очень удобно, когда нет под рукой пароля от административной части (работа за чужим компьютером) и т.д. Но можно пойти еще дальше. Используя возможность публикации через e-mail в WordPress можно создать замечательные... самонаполняющиеся сайты! Например? Сайт знакомств, доску объявлений... все что угодно! Реализовываете на сайт/сайтах (это можно делать на посторонних ресурсах) обратную форму связи с необходимыми полями для заполнения и отправленное через нее письмо через какое-то время опубликуется на нужном вам сайте под управлением WordPress. Или другой пример: можно сделать тематические подписки на наш электронный ящик специальных рассылок (можно найти умелое применение спаму - как правило, некоторый спам нигде не публикуется открыто в интернете, а ваш сайт будет в таком случае, первоисточником такой информации, например, о тренингах, курсах, мероприятиях). В вопросах выбора применения функции публикация через e-mail в WordPress хотел бы положится на вашу фантазию - при умелом подходе, можно создать не только самонаполняющийся сайт (он не требует какого-либо внимания и затрат), но и приносящий пользу для пользователей или для владельца.

Публикация через e-mail в WordPress: настройки

Задать базовые настройки можно и нужно в административной части WordPress (Настройки - Написание - Публикация через e-mail). Их немного: Почтовый сервер, Порт, Логин, Пароль и Рубрика по умолчанию для публикации по почте, но требуют пояснений.

Почтовый сервер. У вашей почты есть POP-3 доступ, увидеть этот адрес можно либо в справочной информации по работе с вашей почтой, либо в разделе настроек вашей почты. Например, для пользователей почты Gmail, этот адрес будет выглядеть как: pop.gmail.com, у Укр.Нет - pop3.ukr.net и т.д.

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

Логин. Ваш почтовый адрес или исключительно логин от почтового ящика (зависит от конкретного поставщика почты и способа авторизации).

Пароль. Ваш пароль от почтового ящика.

Публикация сообщений в WordPress по email: настройки
Публикация сообщений в WordPress по email: настройки

Собственно и все настройки. Должное внимание удалим пункту - Логин. Собственно, это адрес вашей электронной почты, который вы должны зарегистрировать, на который отсылать письма и с которого они будут публиковаться на сайте. Между тем, такой адрес должен быть сложным и обязательно новым! Никому не известным и неудобочитаемым. Ведь если это будет простой электронный ящик, типа [email protected], то такое имя могут подобрать злобные спам-машины и ваш сайт вскоре завалит спам-почта. Именно поэтому, WordPress в разделе настроек публикации через e-mail предупреждает:

Любое сообщение, пришедшее на этот адрес, будет опубликовано, поэтому лучше держать этот адрес в тайне. Вот, например, три произвольных имени, которые вы можете использовать: m7z0l7Tk, Kk8xcVa4, 9BrOlaHj

Таким образом, предпочтительно создавать почтовые ящики по рекомендации WordPress как: [email protected], [email protected] или [email protected] Такой адрес служит своеобразным паролем, его должны знать только вы (или другие редакторы вашего сайта), чтобы на сайт случайно не попала чья-либо посторонняя почта.

После внесения данных настроек, сохраняем их и переходим к тестированию работы скрипта.

Публикация через e-mail в WordPress: тестирование и отладка

Итак, почтовый ящик создан, настройки внесены в WordPress, приступаем к первому тестированию всего в 2 шага:

  1. Отправляем на зарегистрированный нами адрес электронной почты тестовое письмо.
  2. Секунд 10 ждем и открываем в браузере ссылку http://мой_сайт_ру/wp-mail.php

По этой ссылке мы увидим сообщение, типа:

"POP3 connect: Error [0] [php_network_getaddresses: getaddrinfo failed: Name or service not known] (невозможность подключиться к вашему серверу - проверьте обязательно настройки: Настройки - Написание - пункт Публикация через e-mail")

"Притормози, ковбой! Не нужно проверять почту так часто" (слишком частое обращение - повторная попытка к странице возможна через 5 минут)

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

Автор: 1. Заголовок: тема письма. Миссия выполнена. Сообщение 1 удалено. (это свидетельство того, что на почте было письмо, робот обработал его и отправил на сайт на публикацию.

По результатам сообщения на странице http://мой_сайт_ру/wp-mail.php мы можем отследить работу скрипта и в случае чего внести необходимые коррективы в его работу. Это можно сделать в файле wp-mail.php, он находится в корне вашего сайта. Открываем файл текстовым редактором и вносим изменения в строчки (по необходимости для точной отладки):

define('WP_MAIL_INTERVAL', 300); Допустимый интервал просмотра новых писем на почте в секундах. По умолчанию 300 секунд - 5 минут. Желательно не уменьшать эту цифру, а наоборот сделать больше в разы.

$post_author = 1; id пользователя сайта, от имени которого будет опубликована статья. По умолчанию id=1 (это администратор), можно указать id любого редактора, если в этом есть необходимость.

$post_status = 'pending'; Статус новой публикации - по умолчанию - pending (на утверждении - не публикуется сразу на сайте, а отправляется администратору на модерацию). Если поставить статус - publish, то статья опубликуется на сайте сразу же, автоматически.

$charset = ''; Кодировка письма. По умолчанию тут пусто и письма обрабатываются как UTF-8. Для некоторых почтовых серверов тут можно задать свою кодировку если письма публикуются на сайте в нечитабельном виде.

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

Идем дальше...

Публикация через e-mail в WordPress: автоматизация работы

Настройки внесены (Настройки - Написание - Публикация через e-mail), работа скрипта проверена и отлажена (в корневом файле wp-mail.php). Теперь же осталось автоматизировать работу скрипта.

Как я уже упомянул, запускается скрипт вызовом в браузере страницы http://мой_сайт_ру/wp-mail.php Совершенно верно, он не работает автоматически, как это могло показаться вначале, поэтому многие недоумевают: в админке сайта настройки внесены, а функция публикации через e-mail в WordPress не работает - письма не публикуются :(

Чтобы функция работала и скрипт проверял вашу почту автоматически, потребуется запускать скрипт по таймеру. Для этого в панели управления хостингом нам нужно найти такой пункт как Cron.

Cron — это планировщик задач, использующийся для периодического выполнения заданий в определённое время. Регулярные действия описываются специальными инструкциями. Подробнее https://ru.wikipedia.org/wiki/Cron

Нашли в панели управления хостингом Cron? Там нам предложат записать инструкцию посредством подсказок: нам нужно указать когда (Минуты, Часы, Число, Месяц, День недели) и что (Команда) мы будет периодически запускать.

cron: выглядит это так
Приблизительно cron в панели управления хостингом выглядит именно так

Универсальной инструкции по написанию cron не существует, но в справочной информации к своему тарифному плану вы обязательно найдете подсказки по правильному запуску Cron. А еще лучше написать в поддержку, мол, я чайник, пожалуйста, поставьте запуск скрипта http://мой_сайт_ру/wp-mail.php по расписанию (cron), с периодом 2 раза в сутки (зачем же проверять его каждую минуту?)! Уверен, не откажут!

Собственно и все мытарства с публикацией через e-mail в WordPress! Буду рад услышать в комментариях: каким образом эта информация стала для вас полезной и какие сайты вам удалось реализовать посредством описанной функции.

Оцените материал:
Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (13 голоса, рейтинг: 4,92 из 5)
Загрузка...

Вячеслав - типичный интернетчикВячеслав Скоблей (ака files) - типичный интернетчик. Скитаюсь интернетом, пишу на PHP, увлекаюсь созданием веб-сайтов на Wordpress, решаю многочисленные проблемы, которые до появления интернета не существовали...

Специализируюсь на безопасности сайтов: защищаю сайты от атак и взломов, занимаюсь лечением вирусов на сайтах и профилактикой...

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

44 комментарий

  1. владимир says:

    никто больше не спрашивает. попытался настроить так как писли приходит сообщение
    POP3 pass: Authentication failed [-ERR [AUTH] Authentication failed.]

    1. Вячеслав Скоблей says:

      Проверьте логин и пароль

  2. Руслан says:

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

  3. Далер says:

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

    1. Вячеслав Скоблей says:

      Какое сообщение еще, кроме "Притормози, ковбой!..." вы видите при открытии в браузере wp-mail.php? (часто нажимать нет необходимости)

  4. Далер says:

    Я всю правильно настроил, но такую ошибку дает: Притормози, ковбой! Не нужно проверять почту так часто. а эл.почта mail.ru, что мне делать брат?

    1. Вячеслав Скоблей says:

      "Притормози, ковбой! Не нужно проверять почту так часто" - слишком частое обращение - повторная попытка к странице возможна через 5 минут (своеобразная защита). Эта переменная редактируется в define('WP_MAIL_INTERVAL', 300) - файл wp-mail.php

  5. Данный плагин вам всем в помощь, мне помог)

  6. При подключении к яндекс через pop 995 и imap 993,.выдает ошибку: "POP3 connect: Error []"
    При 110 пишет "POP3 connect: Error [0]"
    В настройках яндекса все активировано.

    Может проблема в других плагинах?

  7. Вася says:

    А если надо указать рубрику, куда должен попасть пост или теги? Может есть какие-то метки для этого?

  8. Владимир Викторович says:

    Здравствуйте Вячеслав.У меня есть вордпресс на буржуйском бесплатном хостинге, phpnet.us Все вроде бы ничего,работает.Версия обновлённая. Меня заинтересовал вопрос публикации постов через емаил. Всё сделал как Вы изложили,1 к 1 без ошибок.Проверял. Почтовые ящики разные подключал,все безуспешно. Публикации после прихода письма на почту не появляются почему-то.Подключал Cron на своем хосте к файлу wp-mail.php. После подключения выдало ошибку что таких рабочих мест не найдено.Перевод такой был,он же на англ. языке. Короче говоря не подключился Cron. Теперь вот не знаю что дальше делать.

    1. Вячеслав Скоблей says:

      Прежде чем подключать Cron, начните с отладки скрипта - так как написано в разделе статьи "Публикация через e-mail в WordPress: тестирование и отладка". Отпишите результаты теста.

  9. Василий says:

    Даже после патча, такая песня:
    Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: base64 CjxIVE1MPjxCT0RZPtCi0LXRgdGCPGJyPjxicj48YnI+0KEg0YPQstCw0LbQtdC90LjQtdC8LCA8 YnI+0JjQvdC00LjQstC40LTRg9Cw0LvRjNC90YvQuSDQv9GA0LXQtNC/0YDQuNC90LjQvNCw0YLQ tdC70Yw8YnI+0JHQvtC70LTRi9GA0LXQsiDQktCw0YHQuNC70LjQuSDQndC40LrQvtC70LDQtdCy 0LjRhzxicj44LTk4Ny04NDEtODctODcgQmVlbGluZTxicj44LTk4Ny0xOTUtMDgtOTIgTVRTPGJy PjgtOTIyLTg4Ni0yOS04NiBNZWdhZm9uPC9CT0RZPjwvSFRNTD4K

    1. Вячеслав Скоблей says:

      Уточните, Василий. Ставили патч "wp-mail-base64-patch.diff" ? (ссылка ниже в комментариях)

      1. Василий says:

        Вячеслав, спасибо за ответ. Да, я добавил строки в файл wp-mail.php которые выделены зеленым цветом.

        1. Вячеслав Скоблей says:

          Если все сделали правильно, письмо должно декодироваться:

          if (stripos($content_transfer_encoding, "base64") !== false) {
          $content = base64_decode($content);
           }

          Попробуйте выложить где-нибудь ваш файл.

          1. Василий says:

            yadi.sk/d/aYc2xxZNosuQ4

            1. Вячеслав Скоблей says:

              Никаких правок в файле wp-mail.php я не обнаружил.

              Попробуйте после строк:

              if ( false !== stripos($content_transfer_encoding, "quoted-printable") ) {
              $content = quoted_printable_decode($content);
              }

              вставить:

              if ( false !== stripos($content_transfer_encoding, "base64") ) {
              $content = base64_decode($content);
              }
  10. Валерий says:

    Здравствуйте. Настроил. Приходят вот такого вида посты:

    =F0=CF=CC=CE=D9=CA =D0=C5=D2=C5=DE=C5=CE=D8 =D4=C5=C8=CE=
    =C9=CB=C9 =F7=D9 =CD=CF=D6=C5=D4=C5 =D5=DA=CE=C1=D4=D8 =D5 =D3=D0=C5=C3=
    =C9=C1=CC=C9=D3=D4=CF=D7 =CF=D4=C4=C5=CC=CF=D7 =D0=D2=CF=C4=C1=D6 =C9=CC=
    =C9 =CE=C1 =D3=C1=CA=D4=C5!

    Подскажите, пожалуйста, как поправить. Не знаю как вопрос сформулировать для поисковика.

  11. Сосновоборск says:

    А подскажите, почему письма с сайта приходят на старую почту, в настройках везде вроде сменил на новую, а идут не туда куда нужно?

  12. А, вот, только сейчас вышел коммент...

  13. В админке, в настройках Написания исчез раздел Удаленная публикация. Раньше там ставилась галочка на XML-RPC.
    У тебя версия движка какая? Может ты не обновлялся? Сейчас 4.3
    А где мой первый комментарий?

    1. Вячеслав Скоблей says:

      В админке - Написание есть пункт "Публикация через e-mail" - он никуда не исчез. Версия 4.3

  14. Очень муторно через е-мейл. Настройки не все осилят и картинки не передаются, а только ссылки. Я вот раньше почти 3 года писал посты в Windows Live Writer и отправлял черновики в блог. Мне очень нравилось в нем оформление картинок. Недавно, после очередного обновления движка, эта возможность исчезла. Осталось только через мыло, а меня это не устраивает...

    1. Вячеслав Скоблей says:

      Что именно исчезло? Windows Live Writer работает через API xmlrpc. Его разве убрали в новых версиях ВП? Вроде как нет!

  15. uglion says:

    Прикольная идея о создании самонаполняемого сплога всяким спамом. Чтото в этом есть. :)

  16. Благодарю за понятное описание действий при проделывании которых у меня все заработало. Использовал почтовый ящик выделенный на платном хостинге, присылал с разных почтовиков (gmail.com, yandex.ua, mail.ru) письма. С кодировкой все в порядке, вместо картинок приходят ссылки на них, что довольно удобно для меня как программиста.
    Повторюсь, Благодарю за полезную статью!

  17. Светлана says:

    Добрый день! Возможно ли, что сайт самовольно подключился на публикацию через e-mail?
    По всем признакам, так оно и есть, но ни через почту ни через панель, мне не войти в личный кабинет

  18. Добрый день!
    Пытаюсь настроить публикацию записей через e-mail

    В качестве теста посылаю с mail.ru и gmail посылаю письмо следующего вида:
    тема письма: тест-тема
    содержимое письма: тест-письмо

    c mail.ru публикуется запись:

    тест-тема
    03.02.2015, ОБЪЯВЛЕНИЯ | Редак.
    Content-Type: text/html; charset=utf-8
    Content-Transfer-Encoding: base64

    CjxIVE1MPjxCT0RZPtGC0LXRgdGCLdC/0LjRgdGM0LzQvjwvQk9EWT48L0hUTUw+Cg==

    с gmail публикуется запись:

    тест-тема
    03.02.2015, ОБЪЯВЛЕНИЯ | Редак.

    т.е. с mail.ru приходит вместо содержимого письма набор нераскодированных символов, а с gmail вообще без содержимого письма

    После того, как прописал в wp-mail.php $charset = windows-1251;
    с обоих ящиков публикуются записи без содержимого письма, только с названием заголовка. Что делать?

    1. Вячеслав says:

      Здравствуйте, Виталий.
      Касательно mail.ru
      Из тела письма, а также его содержимого видно, что письмо упаковывается - Content-Transfer-Encoding: base64
      И если раскодировать строчку
      CjxIVE1MPjxCT0RZPtGC0LXRgdGCLdC/0LjRgdGM0LzQvjwvQk9EWT48L0hUTUw+Cg==
      получится
      < HTML>< BODY>тест-письмо< / BODY>< / HTML>

      Таким образом, письмо доходит, но кодируется в base64. Как заставить wp-mail расшифровывать его? Очень просто. Вам надо добавить несколько строчек кода в свой файл wp-mail.php
      Патч найдете по ссылке https://core.trac.wordpress.org/attachment/ticket/5252/wp-mail-base64-patch.diff

      Касательно gmail, трудно ответить, не видя заголовков письма.

  19. почему у меня при переходе по адресу скрипта проверки почты пишется действие запрещено администратором? как это убрать?

    1. Вячеслав says:

      Уточните, вы используете бесплатный хостинг?

    2. Игорь says:

      Присоединяюсь. Аналогичная проблема, хотя раньше все работало. Хостинг платный - Фоззи. В чем может быть проблема

  20. ага действие заприщено администратором и менял параметры все равно сразу не публикует

  21. Евгений says:

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

    Спасибо за статью, публикацию по почте настроил.
    Однако вместо изображения публикуется огромное количество символов:

    This is a multi-part message in MIME format.
    —————000707040805000909060104
    Content-Type: text/plain; charset=UTF-8; format=flowed
    Content-Transfer-Encoding: 7bit

    —————000707040805000909060104
    Content-Type: image/jpeg;
    name=»8f67c4e578fb50489e6ace53acb577433e3a4b355715d0e768f6fda855633c38.jpg»
    Content-Transfer-Encoding: base64
    Content-Disposition: attachment;
    filename*0=»8f67c4e578fb50489e6ace53acb577433e3a4b355715d0e768f6fda85563″;
    filename*1=»3c38.jpg»

    /9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQICAQEBAQMCAgICAwME
    BAMDAwMEBAYFBAQFBAMDBQcFBQYGBgYGBAUHBwcGBwYGBgb/2wBDAQEBAQEBAQMCAgMGBAME
    BgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgb/wAAR
    CAMgAhUDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAA

    и т.д. до бесконечности, образно говоря.

    Что посоветуете?

    Заранее спасибо

    1. Вячеслав says:

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

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

  23. Serga says:

    Ни хрена не получается настроить публикацию по мылу. решил забить((( типа таймаут операции. может ее все таки отключили(

    1. Вячеслав says:

      Serga, пока не отключили. На последней версии 4.0 работает отлично! Интересно было бы услышать, где и какого рода ошибки получили?

      1. Марат says:

        Привет! Cron где указал путь до файла wp-mail.php указал, время проверки каждая минута, скриптом php.
        В самом wordpress указал почту на яндексе (их сервер pop.yandex.ru и порт 995)+ пароль и логин.
        Но ничего не работает ?

        1. Вячеслав says:

          Марат, минимальный (по умолчанию) интервал обращения к файлу wp-mail.php- 5 минут

          (define('WP_MAIL_INTERVAL', 300))

          Таким образом, скрипт блокирует обращения Cron и не будет работать! Прочитайте еще раз внимательно пункт "Публикация через e-mail в WordPress: тестирование и отладка".

          Как вариант, поставьте для теста Cron на 6 минут!

      2. Юра says:

        у меня наверное такая же ошибка. При проверке http://мой_сайт_ру/wp-mail.php выдает ошибку сообщение - POP3 connect: Error [110] [Connection timed out]
        это с портом 110 для gmail. Поискал в интернете, пишут что для gmail нужно 995, проверил, теперь ошибка без опознавательных знаков - POP3 connect: Error []
        Для яндекса с портом 995 тоже ошибка без опознавательных знаков. При указании порта 110 для яндекса выдает ошибку с ссылкой на хелп яндекса, где указаны порты. Но ВП там нет, поэтому наверное подходит порт, который относится к группе "разное", а там 995.
        Что посоветуешь?

        1. Вячеслав says:

          У gmail порт: 995 - верно, но, как правило, POP протокол там выключен и его нужно включить. Перейдите в Gmail через веб-интерфейс - http://mail.google.com/mail в НАСТРОЙКИ, там откройте вкладку "Пересылка и POP/IMAP", включите POP протокол и нажмите "Сохранить изменения".

          C yandex не подскажу! Как вариант, перепробовать все порты или включить POP, если такая возможность предусмотрена.

        2. Павел says:

          Аналогичная проблема с такими же ошибками как и у вас. Вордпресс ни в какую не хочет подключаться к почтовому серверу. Pop в настройках включен, номер порта такой как указан в справке gmail ( пробовал и другие), пароль и логин указан верно ( перепроверил на сто раз ). Уже и не знаю, что не так делаю. Подозрения на то, что сейчас все почтовые сервисы передают почту по защищенному протоколу, а в вордпресс нет такой настройки. Гугл говорит: Требуется SSL: да. Может вы что-то подскажете?! Спасибо!

Добавить комментарий

Ваш адрес email не будет опубликован.