Добрый день, вопрос вот какой:
Есть рассылка в 1С и иногда она не происходит из-за неправильных адресов почты.
Нужно чтобы если почта не отправилась выдавать какое-то сообщение, чтобы вручную не шерстить всех адресатов.
Код отправки примерно такой:
Почта = Новый ИнтернетПочта;
Попытка
Почта.Подключиться(Профиль);
Исключение
Сообщить(ОписаниеОшибки());
Возврат;
КонецПопытки;
Сообщение = Новый ИнтернетПочтовоеСообщение;
Сообщение.ИмяОтправителя = "Отправитель ";
Сообщение.Отправитель = ОбщегоНазначениеПривелигированный.ОтправительSMTP();
Сообщение.Тема = "Тема письма";
Сообщение.Тексты.Добавить("Сообщение");
Сообщение.Получатели.Добавить("НеправильныйАдрес");
Попытка
Если ЗначениеЗаполнено(Сообщение.Получатели) Тогда
Почта.Послать(Сообщение);
КонецЕсли;
Исключение
Инфо = ИнформацияОбОшибке();
Сообщить(ОписаниеОшибки());
КонецПопытки;
При этом никаких ошибок не появляется, верный адрес или нет, сообщение якобы отправлено.
Так вот в описании метода Послать() в синтакс-помощнике есть такое:
Возвращаемое значение:
Тип: Соответствие.
Если почтовый сервер не принял какой-нибудь из адресов получателей, то возвращаемое значение содержит соответствие ошибочный получатель - сообщение об ошибке.
При возникновении других ошибочных ситуаций, генерируется исключение.
Но когда я проверяю что возвращает мне этот Послать() то там пустое соответствие, якобы все отправилось.
Можно ли как-то поймать эту ошибку?
(0) Это особенность почтового протокола. Сервер не проверяет сразу же правильность адреса. Он отправляет как есть, ответ приходит от конечного почтового домена.
"сообщение якобы отправлено" - оно не якобы, оно отправлено.
но отправлено != доставлено
и если в процессе доставки возникли проблемы, то о них почтовые сервера сообщат друг другу по обратной цепочке. но произойти это может с существенной задержкой, у нас в некоторые моменты пиковых перегрузок письма в почте сервер обрабатывал почти с 2 часовой задержкой бывало. админы рассказывали что почти до суток доходило, может врут, сам не помню такого.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший