Написал службу рассылки по почте файлов.
Долгое время работала, но у одного пользователя перестала.
Начал разбираться и обнаружил что не отрабатываются исключения, при попытке подключения к smtp серверу.
Служба виснет на smtp.Connect().
Exception не отрабатывает
Вот код
- Код: Выделить всё
- clSMTP := TIdSMTP.Create(nil);
 clSMTP.Host := MsgOper.smtp;
 clSMTP.Port := MsgOper.smtp_port;
 clSMTP.Username := MsgOper.login;
 clSMTP.Password := MsgOper.Password;
 clSMTP.AuthType := satDefault;
 clSMTP.MailAgent:= MsgOper.smtp_MailAgent;
 ...
 остальные настройки и формирование письма
 ...
 try
 clSMTP.Connect();
 clSMTP.Send(sMessage);
 except
 on E: EIdSMTPReplyError do
 begin
 sTXT := 'message: ' + E.Message + ' / ' +
 'code: ' + IntToStr(E.ErrorCode) + ' / ' +
 'reply: ' + E.EnhancedCode.ReplyAsStr;
 writelog.WrLog( sTXT );
 writelog.WrLog( 'ОШИБКА!!! Подключение к SMTP серверу не удалось. '
 +'Проверьте email, настройки программы, а так же не блокируется ли порт SMTP сервера антивирусом или файреволом(брандмауэром) ');
 end;
 end;
 
 clSMTP.Disconnect;
 clSMTP.Destroy;
Виснет именно на clSMTP.Connect();
проверил ставя сохранение меток в лог writelog.WrLog('1') до коннекта и после writelog.WrLog('2')
Не понятно, то ли Коннект уходит в бесконечную попытку, то ли сервер не возвращает сообщение об ошибке, то ли я не верно написал except on E: EIdSMTPReplyError do
P.S. сервер smtp.yandex.ru
Добавлено спустя 1 час 3 минуты 22 секунды:
Вопрос закрываю.
Добавил
- Код: Выделить всё
- On E: Exception Do
 ShowMessage('Exception --- '+E.ToString);
Это уже отрабатывается и возвращает коннекшн тайм аут.



