Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > IdPOP3+SSL


Автор: Misha_White 22.9.2014, 08:57
Доброго дня!
Есть почтовый клиент, который получал благополучно письма с мэйла.
В выходные мэйлру сказал, что теперь к нему можно подключатся только по SSL. Ладно, нашел пример, запилил, библиотеки подсунул, но, соединение проходит не всегда. Иногда с первого раза, иногда через раз, иногда с третьего-пятого раза. 
Ошибка:
Код

Socket Error #10060 Connection timed out


wtf?

PS: Delphi XE,  Indy 10.5.7.

Код

procedure TMainForm.InitSSL;
begin
  IdPOP31.IOHandler:=SSLHandler;
  IdPOP31.UseTLS:=utUseImplicitTLS;
  case cbSSLType.ItemIndex of
    0:SSLHandler.SSLOptions.Method:=sslvSSLv2;
    1:SSLHandler.SSLOptions.Method:=sslvSSLv23;
    2:SSLHandler.SSLOptions.Method:=sslvSSLv3;
    3:SSLHandler.SSLOptions.Method:=sslvTLSv1;
  end;

end;

procedure TMainForm.Button2Click(Sender: TObject);
var MsgCount, i, k: integer;
    attname:string;
begin
  try
  IdPOP31.Username:=EMail.Text;
  IdPOP31.Password:= EMPass.Text;
  IdPOP31.Host:= EMServ.Text;
  IdPOP31.Port:= StrToInt(EMPort.Text);

  if CheckBUseSSL.Checked then
    InitSSL
  else
    begin
      IdPOP31.IOHandler:= nil;
      IdPOP31.UseTLS:=utNoTLSSupport;
    end;


    IdPOP31.Connect;
      except
        on E:Exception do
        begin
          Memo1.Lines.Add(DateTimeToStr(now)+': Ошибка '+E.Message);
          Exit;

        end;
     end;



Библиотеки из "OpenSSL 1.0.1i 6 Aug 2014" закинул в папку с исполняемым файлом.


Автор: Misha_White 22.9.2014, 10:14
Сделал такой костыль.

Код

i:=1;
    while i<10 do
     begin
      try
      IdPOP31.Connect;
      except
        on E:Exception do
        begin
          Memo1.Lines.Add(DateTimeToStr(now)+': Ошибка '+E.Message);
          inc(i);
          Continue;
        end;
       end;
       i:=10;
     end;





Получается как-то так:
Код

22.09.2014 15:15:26: Ошибка Socket Error # 10060
Connection timed out.
22.09.2014 15:15:26: Ошибка Socket Error # 10060
Connection timed out.
22.09.2014 15:15:28: Соединение с сервером прошло успешно
В почтовом ящике 0 писем
22.09.2014 15:15:28: Disconnected


Автор: Akella 22.9.2014, 12:52
1. А Если удалить встроенные инди и установить максимально актуальные?
2. Сделай пинг к этому маил серверу. Вдруг проблема на ПК или на каком-нибудь шлюзе.
3. Увеличь время timeout`а.

Автор: Misha_White 23.9.2014, 03:26
2.
Код

Обмен пакетами с pop.mail.ru [94.100.180.74] с 32 байтами данных:
Ответ от 94.100.180.74: число байт=32 время=81мс TTL=55
Ответ от 94.100.180.74: число байт=32 время=84мс TTL=55
Ответ от 94.100.180.74: число байт=32 время=81мс TTL=55
Ответ от 94.100.180.74: число байт=32 время=79мс TTL=55
Ответ от 94.100.180.74: число байт=32 время=85мс TTL=55
Ответ от 94.100.180.74: число байт=32 время=85мс TTL=55
Ответ от 94.100.180.74: число байт=32 время=79мс TTL=55
Ответ от 94.100.180.74: число байт=32 время=80мс TTL=55
Ответ от 94.100.180.74: число байт=32 время=86мс TTL=55
Ответ от 94.100.180.74: число байт=32 время=81мс TTL=55
Ответ от 94.100.180.74: число байт=32 время=81мс TTL=55
Ответ от 94.100.180.74: число байт=32 время=82мс TTL=55
Ответ от 94.100.180.74: число байт=32 время=88мс TTL=55
Ответ от 94.100.180.74: число байт=32 время=84мс TTL=55
Ответ от 94.100.180.74: число байт=32 время=85мс TTL=55
Ответ от 94.100.180.74: число байт=32 время=78мс TTL=55
Ответ от 94.100.180.74: число байт=32 время=81мс TTL=55
Ответ от 94.100.180.74: число байт=32 время=80мс TTL=55
Ответ от 94.100.180.74: число байт=32 время=85мс TTL=55
Ответ от 94.100.180.74: число байт=32 время=84мс TTL=55
Ответ от 94.100.180.74: число байт=32 время=80мс TTL=55
Ответ от 94.100.180.74: число байт=32 время=87мс TTL=55
Ответ от 94.100.180.74: число байт=32 время=85мс TTL=55
Ответ от 94.100.180.74: число байт=32 время=87мс TTL=55
Ответ от 94.100.180.74: число байт=32 время=79мс TTL=55
Ответ от 94.100.180.74: число байт=32 время=81мс TTL=55
Ответ от 94.100.180.74: число байт=32 время=85мс TTL=55
Ответ от 94.100.180.74: число байт=32 время=86мс TTL=55
Ответ от 94.100.180.74: число байт=32 время=79мс TTL=55
Ответ от 94.100.180.74: число байт=32 время=81мс TTL=55
Ответ от 94.100.180.74: число байт=32 время=79мс TTL=55
Ответ от 94.100.180.74: число байт=32 время=81мс TTL=55
Ответ от 94.100.180.74: число байт=32 время=85мс TTL=55
Ответ от 94.100.180.74: число байт=32 время=81мс TTL=55
Ответ от 94.100.180.74: число байт=32 время=80мс TTL=55
Ответ от 94.100.180.74: число байт=32 время=83мс TTL=55
Ответ от 94.100.180.74: число байт=32 время=79мс TTL=55
Ответ от 94.100.180.74: число байт=32 время=79мс TTL=55
Ответ от 94.100.180.74: число байт=32 время=80мс TTL=55

Статистика Ping для 94.100.180.74:
    Пакетов: отправлено = 39, получено = 39, потеряно = 0
    (0% потерь)
Приблизительное время приема-передачи в мс:
    Минимальное = 78мсек, Максимальное = 88 мсек, Среднее = 82 мсек


3. Поставил
Код

IdPOP31.ConnectTimeout:=30000;

Будем смотреть.Не помогло... Чего-то я недопонимаю.

Такое чувство, что коннектТаймаут не работает.

Код

23.09.2014 08:35:48: Ошибка Socket Error # 10060
Connection timed out.
23.09.2014 08:35:48: Ошибка Socket Error # 10060
Connection timed out.
23.09.2014 08:35:49: Ошибка Socket Error # 10060
Connection timed out.
23.09.2014 08:35:49: Ошибка Socket Error # 10060
Connection timed out.
23.09.2014 08:35:51: Соединение с сервером прошло успешно
В почтовом ящике 0 писем
23.09.2014 08:35:51: Disconnected

Автор: Akella 23.9.2014, 14:58
а ReadTimeout?

Автор: Akella 23.9.2014, 15:13
Цитата(Akella @ 22.9.2014,  12:52)
1. А Если удалить встроенные инди и установить максимально актуальные?
2. Сделай пинг к этому маил серверу. Вдруг проблема на ПК или на каком-нибудь шлюзе.
3. Увеличь время timeout`а.

4. Удали встроенные инди, скачай актуальные и установи. Да, помучаешься, но зато потом будешь доволен.

Добавлено через 4 минуты и 30 секунд
Ещё у компоненты IdSSLIOHandlerSocketOpenSSL1 есть ReadTimeout/ConnectTimeout
Ты же подключаешь?

Добавлено через 7 минут и 43 секунды
здесь http://www.sql.ru/forum/1019696/tidhttp-tidssliohandlersocketopenssl-socket-error-10060-connection-timed-out человек пишет, что ему помогла переустановка indy
и у нас на форуме она по шагам расписана
так что вперёд smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)