Не отрабатывает try except в службе ???

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Не отрабатывает try except в службе ???

Сообщение jsa » 01.06.2021 07:47:20

Здравствуйте.
Написал службу рассылки по почте файлов.
Долгое время работала, но у одного пользователя перестала.
Начал разбираться и обнаружил что не отрабатываются исключения, при попытке подключения к 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);

Это уже отрабатывается и возвращает коннекшн тайм аут.
jsa
постоялец
 
Сообщения: 288
Зарегистрирован: 28.11.2017 13:46:04

Re: Не отрабатывает try except в службе ???

Сообщение Снег Север » 01.06.2021 08:53:48

Попробуйте clSMTP.ReadTimeout выставить в какое-нибудь разумное значение.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 3051
Зарегистрирован: 27.11.2007 16:14:47

Re: Не отрабатывает try except в службе ???

Сообщение jsa » 01.06.2021 10:29:11

Снег Север писал(а):Попробуйте clSMTP.ReadTimeout выставить в какое-нибудь разумное значение.

Да, спс.
В явном виде указал, до этого не было.
clSMTP.ConnectTimeout :=
clSMTP.ReadTimeout :=
Параметры вынес из программы в настройки. Сейчас по 30000 мкс
jsa
постоялец
 
Сообщения: 288
Зарегистрирован: 28.11.2017 13:46:04


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12

Рейтинг@Mail.ru
cron