Что он делает
WordPress передаёт каждое письмо собственной функции сервера mail(), которая не проходит проверку подлинности. Почтовые ящики относятся к такому письму с подозрением, а когда его отклоняют, об этом никому не сообщают: wp_mail() возвращает false, страница идёт дальше, а сброс пароля или подтверждение заказа просто пропадает.
MevvMail заменяет этот путь. Он отправляет через настроенное вами подключение с проверкой подлинности, обходит список подключений в порядке приоритета, пока одно из них не примет письмо, повторяет попытки для тех, что не сработали, и показывает статус доставки заказа WooCommerce прямо на экране заказа.
- Когда его стоит применять
- Ваш магазин отправляет письма о заказах, учётной записи или счетах, и на вопрос «оно ушло?» вам нужно отвечать записью, а не догадкой.
- Он ничего не меняет, пока вы его не настроите
- Если подключений не задано, фильтр возвращает отправку прямо WordPress. Активация плагина никогда не забирает себе молча работающий почтовый путь.
- Это не сервис рассылки
- MevvMail не перепродаёт доставку и не имеет собственной квоты. Вы приносите свой SMTP-сервер или свою учётную запись у провайдера, а плагин ими пользуется.
Требования: WordPress 6.0 или новее и PHP 8.1 или новее. WooCommerce не обязателен — без него всё работает так же, нет только блока заказа.
Установка
- Установите бесплатный плагин MevvMail: загрузите zip через Плагины → Добавить новый или скопируйте каталог
mevvmailв/wp-content/plugins/. - Активируйте его. Пока ничего не перехватывается.
- Откройте MevvMail → Подключения и добавьте первое подключение.
- Нажмите Отправить тестовое письмо и убедитесь, что письмо пришло.
- Необязательно, но желательно: добавьте запасное второе подключение с более низким приоритетом.
- Только если вам нужны экраны Pro: установите MevvMail Pro вторым плагином и активируйте лицензию MEVM в разделе MevvMail → Лицензия.
Когда установлен Pro, оставьте бесплатный плагин активным. Отправка, переключение на резервное подключение и журнал живут в бесплатном плагине, поэтому истёкшая лицензия никогда не остановит отправку писем вашего магазина.
Подключения
Подключение — это один путь наружу с вашего сайта. Доступно десять типов, и каждый из них есть в бесплатном плагине: ни одна возможность не придержана и никакого ограничения на отправку с нашей стороны.
Поля на экране
- Название
- Ваша собственная подпись для подключения. Именно её журнал показывает в столбце «Подключение», поэтому дайте такое название, которое вы узнаете в три часа ночи.
- Провайдер
- Выберите тип. Остальная часть формы меняется вместе с ним: 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.
Отслеживание открытий — это подсказка, а не измерение. Почтовый ящик, который блокирует изображения, или прокси, который их кеширует, делает пиксель немым или срабатывающим раньше времени. Поэтому сохраняется только первое открытие и поэтому продукт не показывает процент открытий.
Что покидает ваш сервер
Две вещи, и обе перечислены здесь.
- Ваше письмо — провайдеру, которого вы настроили. Отправитель, получатели, тема, тело, Reply-To и произвольные заголовки, если они есть, и ваш собственный API-ключ, чтобы провайдер мог вас опознать. MevvMail ничего не добавляет — ни адреса сайта, ни данных пользователей, ни какого-либо нашего идентификатора, — и ни одному провайдеру ничего не отправляется, пока вы не создадите подключение этого типа.
- Проверка обновлений. Два значения — слаг плагина и номер установленной версии — отправляются на
https://mevvsoft.com/api/v1/license/free-update, когда WordPress запускает собственную проверку обновлений, а закешированный ответ старше двенадцати часов. Ни адреса сайта, ни адреса электронной почты, ни ключа лицензии, ни списка плагинов, ни статистики использования. Ответ подписан, а неподписанный отбрасывается. В копии, которая распространяется через каталог плагинов WordPress, файла обновления нет вовсе.
Издатель не получает от этого плагина ни содержимого писем, ни адресов получателей, ни записей журнала, ни аналитики. Журнал — это таблица в вашей собственной базе данных, и вы решаете, сколько он хранится и хранятся ли тела писем вообще.
Устранение неполадок
- Журнал говорит «отправлено», но письмо не пришло
- «Отправлено» означает, что подключение приняло письмо, а не что почтовый ящик положил его во «Входящие». Проверьте спам, затем проверьте, что адрес отправителя находится в домене, чьи записи SPF, DKIM и DMARC разрешают провайдера, через которого вы отправляете. Большая часть писем, пропадающих на этом этапе, — это проверка подлинности, а не доставка.
- Всё падает на первом подключении
- Откройте запись и прочитайте собственный ответ провайдера: он сохраняется вместе с попыткой. Неверный порт и неверное шифрование, истёкший ключ и отправитель, которого провайдер не разрешает, объясняют большинство случаев.
- Письмо с вложением не ушло
- Проверьте, есть ли в вашей цепочке SMTP-подключение. Без него письмо с файлом намеренно записывается как неудачное.
- Повторы никогда не срабатывают
- Две причины. WP-Cron запускается только тогда, когда кто-то заходит на сайт, поэтому на тихом сайте повтор ждёт трафика — или перейдите на настоящий серверный cron. Вторая — настройка «Сохранять тело письма»: когда она выключена, повторять нечем, и неудачная запись намеренно остаётся нетронутой.
- Кнопка «Отправить повторно» ничего не сделала
- Эта запись была сохранена без тела, поэтому отправлять нечего. Включите обратно настройку «Сохранять тело письма» для тех записей, которые вы, возможно, захотите отправить повторно.
- Экранов Pro нет
- Проверьте, что бесплатный плагин активен, плагин Pro активен и лицензия активирована. Нужны все три, и экран лицензии говорит, какое из условий не выполнено.
Когда пишете нам, укажите версии плагинов, версии WordPress и PHP, тип подключения и точный текст ответа провайдера из записи журнала. Сначала уберите адреса покупателей и тело письма; ответа почти всегда достаточно самого по себе.