Перейти к содержимому

Письма с сайта не доходят - разбор причин по убыванию частоты

Заказ оформлен, а письма нет ни у покупателя, ни у менеджера. Разбираем причины по убыванию частоты: письмо теряется на четырёх разных участках пути.

С чего начать

Смотрим, дошло ли дело до создания письма:

$res = CEvent::GetList('ID', 'DESC', ['EVENT_NAME' => 'SALE_NEW_ORDER']);
while ($e = $res->Fetch()) {
printf("%s %s -> %s успех=%s\n",
$e['DATE_INSERT'], $e['EVENT_NAME'], $e['C_FIELDS'] ?? '', $e['SUCCESS_EXEC']);
}
// признак успеха 'N' означает, что запись очереди ещё не отправлена
// пусто - письмо не создавалось вовсе, значит дело в событии или шаблоне
// имя события подставляют своё: SALE_NEW_ORDER, USER_PASS_REQUEST и другие

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

Проверяем шаблоны и их привязку к сайту:

$res = CEventMessage::GetList([], ['EVENT_NAME' => 'SALE_NEW_ORDER']);
while ($m = $res->Fetch()) {
printf("шаблон=%d сайт=%s активен=%s кому=%s\n",
$m['ID'], $m['LID'], $m['ACTIVE'], $m['EMAIL_TO']);
}
// шаблон другого сайта на мультисайте не сработает: привязка идёт по сайту

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

Смотрим, приняла ли письмо почтовая программа сервера:

Окно терминала
tail -50 /var/log/maillog | grep -i 'status='
mailq | tail -20
grep -c 'to=<' /var/log/maillog # сколько писем сервер вообще принял
# status=sent означает принято дальше, deferred - висит в очереди сервера

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

Причины

  1. Шаблон выключен или привязан к другому сайту примерно 30% случаев

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

    ПроверкаСмотрим список шаблонов события и их признак активности вместе с привязкой к сайту.

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

  2. Письма стоят в очереди и не отправляются примерно 25% случаев

    ПризнакЗаписи в очереди накапливаются, а признак успешной отправки у них не выставлен.

    ПроверкаСмотрим настройку отправки почты и работу агентов, которые разбирают очередь.

    Что делатьЧиним запуск агентов по расписанию: без них очередь копится и письма не уходят.

  3. Почтовая программа сервера не настроена примерно 20% случаев

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

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

    Что делатьНастраиваем отправку через внешний почтовый сервис: локальная отправка на своём адресе доверия не вызывает.

  4. Письмо уходит, но попадает в спам примерно 15% случаев

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

    ПроверкаПроверяем записи домена, подтверждающие право сервера отправлять от его имени.

    Что делатьНастраиваем записи домена и подпись писем, а адрес отправителя берём на своём домене.

  5. Адрес получателя задан неверно примерно 10% случаев

    ПризнакПисьма покупателю приходят, а менеджеру нет, или наоборот.

    ПроверкаСмотрим поле получателя в шаблоне и настройки адресов магазина.

    Что делатьПравим адрес в шаблоне: подстановка из заказа и адрес магазина задаются в разных местах.

Частые вопросы

Почему письма приходят с большой задержкой?

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

Стоит ли отправлять почту прямо с сервера сайта?

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

Как проверить письмо, не оформляя заказ?

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

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

У получателя внутри компании работает своя защита от спама. Письма от неизвестного адреса она откладывает молча.

Смежное

Первоисточник