Бывает, что письма с сайта отправляются не всегда. Разработчик и клиент об этом могут не знать.
Но проблема есть. А проявляется она так: посетитель заполнил форму обратной связи. В модуле «формы» появилась запись. А на почту владельца сайта сообщение не пришло. Требуется гарантия (!), что все письма отправляются.
Начинается разбор полетов. Тестирование. Проверка кода. Делается вывод, что клиент что-то перепутал.
Мы сделали другой вывод: — Письмо может отправиться или не отправиться из-за самочувствия сервера в данный конкретный момент.[spoiler]
Нетривиальная задача:
Для одного сайта мы сделали собственную интеграцию с 1С: на сайт выгружаются документы покупателей (акты и накладные). Если есть e-mail покупателя, то создается новый пользователь, и ему высылается письмо с логином и паролем.
В результате, покупатель может посмотреть, какие услуги и товары он приобретал. (речь идет об обычных магазинах, а не интернет-магазине)
При тестировании выяснилось, что всё работает, но письма отправляются не всегда. Это плохо. Какой смысл делать интеграцию с 1С, если покупатель не получит письмо и никогда не узнает, что можно зайти на сайт?
В нашем примере сайт работает на хостинге «Ру-центр», тариф 201 от 262,50 рублей в месяц.
Это самый дешевый тариф «Ру-центра», на котором можно размещать простые сайты на Битриксе.
Особенностью тарифа 201 является ограничение объема оперативной памяти 128 мегабайт.
Фактически ограничения нет. При увеличении нагрузки, выделится больше, чем 128 мегабайт. Но не гарантируется отправка почты.
В нашем примере, во время интеграции с 1С резко возрастает расход оперативной памяти. В эти минуты письма не отправляются. И даже, после того, как выгрузка закончилась, еще 2 минуты почта не работает.
Что можно сделать:
1. Можно перейти на тариф 301 с ограничением памяти 192 мегабайта (от 407,50 рублей в месяц).
2. Если включен eAccelerator, то можно его отключить. Уменьшится быстродействие, но освободится память.
3. Оптимизировать собственные скрипты.
Каждая из этих мер не решит проблему неотправленных сообщений.
При большом количестве посетителей, все-равно будут моменты, когда памяти на почту не хватает, и письма не отправляются!
Повесить почту на крон тоже нельзя. Потому что крон может запуститься в момент, когда памяти не хватает.
Правильное решение — установить модуль «Управление почтой»:
Битрикс записывает все почтовые события в базу данных (и хранит по-умолчанию 14 дней).
«Управление почтой» позволяет просматривать список событий и открывать каждое письмо детально.
События можно искать с помощью фильтра. Например, по e-mail пользователя можно найти все письма, которые ему отправлялись.
Главная фишка — неотправленные письма можно послать повторно. Получается, не нужен дорогой хостинг. Можно обойтись и «Ру-центром». Мы решили задачу неотправленных писем.
Если неотправленных писем много, то можно по шагам их отправить. Шаг задается в секундах. Например, раз в 10 секунд отправлять по 5 писем, чтобы не нагружать почтовый сервер.
Страница с настройками почтовой системы позволяет администратору быстрее разобраться, если почта вообще не работает. Об этом уже написано в другой статье.
Скриншоты сделаны для версии модуля 1.1.0.
Модуль будет полезен для многих сайтов. Интеграция с 1С на «Ру-центре» — это всего лишь показательный пример. Иногда простые посетители, которые зашли одновременно, могут создавать приличную нагрузку.
Ждем рекомендаций и замечаний по модулю. С удовольствием отвечу на вопросы.
Создайте в модуле "Почта" ящик "no-reply@<ваш домен>" и пусть на него собираются все ответы. Если вдруг пришел ответ от Яндекса вида recipient not found, - парсите письмо, находите адрес и удаляете e-mail из списка рассылок.
Мы так и сделали, только тут фишка в том, что разные сервера по разному отвечают и лучше всего вести базу подобных ответов централизовано. Ваш модуль — так и просится, тем более если беда с почтой, то ты в него лезешь и пытаешься найти концы. Сами подобный функционал до модуля доводить не планируем.
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».