Документация MevvMail

Доставьте письмо — и сумейте это доказать.

MevvMail берёт на себя wp_mail(), отправляет через настроенные вами подключения, повторяет то, что не ушло, и записывает каждую попытку в таблицу в вашей собственной базе данных. В этом руководстве — установка, экран подключения поле за полем, порядок обхода цепочки, журнал, блок заказа WooCommerce, экраны Pro и то, что стоит проверить, когда письмо не пришло.

Что он делает

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

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

Когда его стоит применять
Ваш магазин отправляет письма о заказах, учётной записи или счетах, и на вопрос «оно ушло?» вам нужно отвечать записью, а не догадкой.
Он ничего не меняет, пока вы его не настроите
Если подключений не задано, фильтр возвращает отправку прямо WordPress. Активация плагина никогда не забирает себе молча работающий почтовый путь.
Это не сервис рассылки
MevvMail не перепродаёт доставку и не имеет собственной квоты. Вы приносите свой SMTP-сервер или свою учётную запись у провайдера, а плагин ими пользуется.

Требования: WordPress 6.0 или новее и PHP 8.1 или новее. WooCommerce не обязателен — без него всё работает так же, нет только блока заказа.

Установка

  1. Установите бесплатный плагин MevvMail: загрузите zip через Плагины → Добавить новый или скопируйте каталог mevvmail в /wp-content/plugins/.
  2. Активируйте его. Пока ничего не перехватывается.
  3. Откройте MevvMail → Подключения и добавьте первое подключение.
  4. Нажмите Отправить тестовое письмо и убедитесь, что письмо пришло.
  5. Необязательно, но желательно: добавьте запасное второе подключение с более низким приоритетом.
  6. Только если вам нужны экраны Pro: установите MevvMail Pro вторым плагином и активируйте лицензию MEVM в разделе MevvMail → Лицензия.

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

Подключения

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

SMTPPHP mail()BrevoSendGridMailgunPostmarkSparkPostElastic EmailSMTP2GOResend

Поля на экране

Название
Ваша собственная подпись для подключения. Именно её журнал показывает в столбце «Подключение», поэтому дайте такое название, которое вы узнаете в три часа ночи.
Провайдер
Выберите тип. Остальная часть формы меняется вместе с ним: SMTP спрашивает хост, порт, шифрование и учётные данные, а API-провайдер — ключ и, для Mailgun и SparkPost, регион.
Приоритет
Число. Цепочка обходится от наименьшего приоритета вверх, поэтому основное подключение получает наименьшее число, а запасное — большее.
Имя отправителя и адрес отправителя
Отправитель, от имени которого уходит письмо. Используйте адрес в домене, чьи записи SPF, DKIM и DMARC указывают на провайдера, через которого вы отправляете, — иначе почтовый ящик останется подозрительным даже к безупречно доставленному письму.
Принудительно ставить этого отправителя в каждом письме
По умолчанию выключено. Когда включено, это подключение перекрывает любого отправителя, которого несло письмо. Полезно, когда плагин отправляет с адреса, который ваш провайдер не разрешит; вредно, если вы действительно полагаетесь на отдельного отправителя у каждого плагина.
Активно
Неактивное подключение цепочка пропускает, а на экране оно остаётся. Так вы выводите одного провайдера из работы, не теряя его настроек.

Сохранённые секреты никогда не выводятся обратно в форму. В полях пароля и API-ключа написано «Сохранено — оставьте пустым, чтобы сохранить»: вводите значение, только если вы его заменяете.

Проверьте, прежде чем доверять

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

Цепочка и что происходит при сбое

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

Когда отказали все подключения, запись отмечается как неудачная и ставится в очередь на повтор. Попыток будет ещё три — через одну минуту, пять минут и тридцать минут, — после чего всё прекращается. Адрес, которого не существует, не начнёт существовать на сороковой попытке.

Повторы планируются через WP-Cron, а он запускается только тогда, когда кто-то заходит на сайт. На тихом сайте повтор может произойти позже той минуты, на которую он был назначен. Если это важно, перейдите на настоящий серверный cron обычным способом — DISABLE_WP_CRON в wp-config.php плюс вызов wp-cron.php из crontab. В MevvMail для этого ничего менять не нужно.

Цепочка, которая имеет смысл

  • Два подключения у двух разных провайдеров защитят вас от плохого дня одного провайдера. Два подключения у одного провайдера — нет.
  • Держите в цепочке одно SMTP-подключение, иначе письмам с вложениями будет некуда идти (см. ниже).
  • PHP mail() — разумное последнее средство, но плохой первый выбор: это и есть тот путь без проверки подлинности, ради замены которого плагин и существует.

Журнал писем

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

Что записывается
Время, получатели, тема, статус, подключение, которое обработало письмо, часть сайта, которая его создала, собственный ответ провайдера и число попыток.
Фильтры
По статусу (отправлено, не отправлено, ожидает), по источнику и по дате. Эти три вместе обычно и составляют всё расследование в поддержке.
Источник
Письмо может нести метку, говорящую, какой плагин его создал, — форма, письмо о восстановлении, уведомление WooCommerce. Метка записывается в отдельный столбец и снимается с письма перед отправкой, поэтому она никогда не доходит до получателя.
Отправить повторно
Любую запись можно отправить заново из списка. Она снова идёт по цепочке с самого начала, поэтому используется и то подключение, которое к этому моменту уже починили.
Сохранять тело письма
По умолчанию включено. Выключите — и журнал будет хранить только заголовки. Такую запись можно посмотреть, но нельзя отправить повторно, а неудачная отправка к тому же не ставится в очередь на лестницу повторов, потому что в обоих случаях ничего не сохранилось для отправки.
Хранить записи журнала
7, 30, 90 дней или бессрочно. Более старые записи удаляются по расписанию.

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

Удаление

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

Вложения

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

  • Письмо с файлом окончательно пропускает API-подключения и ищет в цепочке SMTP-подключение.
  • Если SMTP-подключение настроено, счета, билеты и PDF уходят как обычно.
  • Если SMTP-подключения нет, такое письмо записывается как неудачное, а не доставляется без файла: молчаливая доставка без счёта была бы хуже видимого сбоя.

Практическое правило умещается в одну строку: держите в цепочке одно SMTP-подключение, что бы в ней ещё ни было.

Заказы WooCommerce

Когда WooCommerce активен, на каждом экране заказа появляется блок со списком писем, которые этот заказ создал, и статусом доставки каждого из них. На вопрос «получил ли покупатель подтверждение?» отвечают по заказу, а не поиском по журналу.

Журнал также записывает, каким письмом WooCommerce было сообщение, поэтому повтор, который случится через полчаса, по-прежнему знает, что именно он отправляет, — а с лицензией Pro ещё и то, какое правило маршрутизации и какая тема к нему относятся.

На сайте без WooCommerce MevvMail работает ровно так же. Просто нет блока заказа.

Что добавляет лицензия Pro

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

Дизайнер писем WooCommerce
Логотип, основной цвет, цвет фона, текст подвала и тема письма для каждого типа, с предпросмотром сохранённого оформления. Оформление применяет бесплатный плагин, поэтому оно переживает отключение лицензии.
Отслеживание открытий
Необязательный пиксель 1×1, который отдаёт ваш собственный сайт; он записывается как одна отметка времени в столбце «Открыто» журнала. По умолчанию выключено. Не собираются ни IP-адрес, ни почтовый клиент, ни реферер, ни местоположение, ни устройство, ни число открытий, и нигде не показывается процент открытий.
Оповещения о сбоях
Одно письмо или вебхук на каждый сбой, после выбранного вами числа неудач подряд. Оповещение уходит по собственному почтовому пути сервера — чтобы оно дошло до вас и тогда, когда сломаны как раз ваши подключения, — и не несёт ни получателя, ни темы, ни тела неотправленного письма.
Условная маршрутизация
Правила по метке источника или по типу письма WooCommerce перемещают подключение в начало цепочки. Цепочка при этом никогда не сужается, поэтому резервирование продолжает работать, и правило срабатывает и при отложенном повторе.

Лицензия активируется в разделе MevvMail → Лицензия ключом, начинающимся с MEVM. Если она истечёт, дизайнер, отслеживание, оповещения и маршрутизация остановятся; отправка, резервирование и журнал продолжат работать, потому что они никогда и не принадлежали Pro.

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

Что покидает ваш сервер

Две вещи, и обе перечислены здесь.

  1. Ваше письмо — провайдеру, которого вы настроили. Отправитель, получатели, тема, тело, Reply-To и произвольные заголовки, если они есть, и ваш собственный API-ключ, чтобы провайдер мог вас опознать. MevvMail ничего не добавляет — ни адреса сайта, ни данных пользователей, ни какого-либо нашего идентификатора, — и ни одному провайдеру ничего не отправляется, пока вы не создадите подключение этого типа.
  2. Проверка обновлений. Два значения — слаг плагина и номер установленной версии — отправляются на https://mevvsoft.com/api/v1/license/free-update, когда WordPress запускает собственную проверку обновлений, а закешированный ответ старше двенадцати часов. Ни адреса сайта, ни адреса электронной почты, ни ключа лицензии, ни списка плагинов, ни статистики использования. Ответ подписан, а неподписанный отбрасывается. В копии, которая распространяется через каталог плагинов WordPress, файла обновления нет вовсе.

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

Устранение неполадок

Журнал говорит «отправлено», но письмо не пришло
«Отправлено» означает, что подключение приняло письмо, а не что почтовый ящик положил его во «Входящие». Проверьте спам, затем проверьте, что адрес отправителя находится в домене, чьи записи SPF, DKIM и DMARC разрешают провайдера, через которого вы отправляете. Большая часть писем, пропадающих на этом этапе, — это проверка подлинности, а не доставка.
Всё падает на первом подключении
Откройте запись и прочитайте собственный ответ провайдера: он сохраняется вместе с попыткой. Неверный порт и неверное шифрование, истёкший ключ и отправитель, которого провайдер не разрешает, объясняют большинство случаев.
Письмо с вложением не ушло
Проверьте, есть ли в вашей цепочке SMTP-подключение. Без него письмо с файлом намеренно записывается как неудачное.
Повторы никогда не срабатывают
Две причины. WP-Cron запускается только тогда, когда кто-то заходит на сайт, поэтому на тихом сайте повтор ждёт трафика — или перейдите на настоящий серверный cron. Вторая — настройка «Сохранять тело письма»: когда она выключена, повторять нечем, и неудачная запись намеренно остаётся нетронутой.
Кнопка «Отправить повторно» ничего не сделала
Эта запись была сохранена без тела, поэтому отправлять нечего. Включите обратно настройку «Сохранять тело письма» для тех записей, которые вы, возможно, захотите отправить повторно.
Экранов Pro нет
Проверьте, что бесплатный плагин активен, плагин Pro активен и лицензия активирована. Нужны все три, и экран лицензии говорит, какое из условий не выполнено.

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