Дано: коробочный БУС, активная демо-лицензия, сервер - локальный апач на линуксе. На сайте имеется форма отправки писем на емайл, сделанная по видео С.Покоева "Быстрый старт разработчика", а так же настроенный по инструкции и гарантированно рабочий крон, настроенный и рабочий почтовый сервис, все дела. НО!
Письма, отправленные через форму, не доходят до целевой почты, а инструмент полной проверки системы (в админке) в поле "Проверка на наличие неотправленных сообщений" выдаёт сообщение:
"Ошибка! Есть ошибки при отправке системных почтовых сообщений, число неотправленных сообщений: 3 Определена константа BX_CRONTAB_SUPPORT в /bitrix/php_interface/dbconn.php, при этом должен быть настроен вызов агентов на cron. Закеширована информация об отправке почты, возможно это произошло в результате сбоя, попробуйте очистить весь кеш."
После очистки кеша все неотправленные письма почти сразу же (по крону) пачкой падают на почту.
Дело в том, что крон-скрипты работают с минимальным интервалом 1 минуту, а скрипт проверяет фактическое нахождение не отправленных писем в очереди. Т.е если сейчас 01 секунда и было добавлено 3 письма, то запуск скрипта до 59 секунды включительно покажет вам 3 не отправленных письма.
Главное чтобы это количество не начало расти без нагрузки(!), т.е. сегодня 3, завтра 6, после завтра 15. Серьезной ошибкой будет, если без увеличения числа заказов у вас это число станет 150 и выше.
Дело в том, что крон-скрипты работают с минимальным интервалом 1 минуту, а скрипт проверяет фактическое нахождение не отправленных писем в очереди.
Спасибо за ответ, но это не тот случай. Письма вообще не доходят до адресата, хоть через 1 минуту 59 секунд, хоть через сутки - до тех пор, пока не сделаешь полную очистку кеша в админке.
Дмитрий Васильев, "дохождение писем до адресата" лежит вне зоны ответственности битрикса. Битрикс использует стандартную функцию mail и передает отправляемое письмо в postfix. В случае если postfix его принимает, то отправкой занимается именно он, соответственно его логи и нужно смотреть.
В битриксе можно проверить какой ответ дал postfix (не в плане вывода, а принял/непринял) - зайти в таблицу b_event и если там в поле SUCCESS_EXEC стоят Y - значит успешно передал. Если N - еще не обработали, если F - postifx отказался принять и если 0 - отменено обработчиками.