Показать сообщение отдельно
  #6  
Старый 21.03.2009, 12:06
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Вы под D7 пишите? Я уже давно переписал все под D2007, а там эти библиотеки несколько изменились. Насколько я помню, одним из подводных камешков я вилось, то что необходимо проверять наличие коннекта, независимо то того 1 раз вы подключаетесь или 10, и в случае неудачи первой попытки делать это вторично.
у меня это реализовано так:
Код:
TryCount := 0; //Организуем цикл с нужным количеством попыток отправки в моем случае 3
    repeat
     try
      if not SMTP.Connected then SMTP.Connect; // Проверяем имеющееся подключение и если его нет подключаем
      SMTP.Send(Mail); // Отсылаем сообщение
      Mail.Clear; // В новой версии библиотек TIdMessage оформлено как отдельный контрол. У меня Mail: TIdMessage
      SMTP.Disconnect; // Отключаем соединение по ненадобности.
      Break; // поскольку все прошло удачно, выходим из цикла
     except // неудача соединения
      LogMessage('Ошибка подключения к SMTP-серверу. Повтор через 5 сек.', mtError); //Это моя процедура для регистрации событий в журнале
      StartTime := GetTickCount;  //Организуем цикл ожидания
      repeat
       Application.ProcessMessages; // Что-бы приложение не "замерзло"  в процессе ожидания
      until GetTickCount - StartTime > 5 * OneSec; // Собственно ждем 5 секунд
     end;
     Inc(TryCount); 
    until TryCount = 3; //Если количество попыток отправки больше 3 прекращаем попытки.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием