Показать сообщение отдельно
  #1  
Старый 27.06.2017, 22:13
Pcrepair Pcrepair вне форума
Новичок
 
Регистрация: 20.01.2015
Сообщения: 52
Версия Delphi: Pascal
Репутация: 10
По умолчанию Использование МХ-записи с ИНДИ

Добрый день.
Есть код определяющий имена СМТП-серверов в МХ-записи (типа mx.kubsu.ru)
Есть код, на основе ИНДИ, отсылки письма в том числе по 465 порту
через СМТП-сервер типа гугл, яндекс, мылору. все работает

НО, если вставить вместо имени смтп-сервера имя смтп-сервера из МХ-записи (типа mx.kubsu.ru)
(как это советуют корефаны типа Remy Lebeau Jul 9 '14 at 19:50)

Код:
for I := 0 to IdDNSResolver1.QueryResult.Count-1 do
  begin
    if IdDNSResolver1.QueryResult[i] is TMXRecord then
    begin
      IdSMTP1.Host := TMXRecord(IdDNSResolver1.QueryResult[i]).ExchangeServer;  //вот тут mx.kubsu.ru
      try
        IdSMTP1.Connect;
        try
          IdSMTP1.Verify(user);
          Result := True;
          Exit;
        finally
          IdSMTP1.Disconnect;
        end;
      except
        // тут ловим исключение Socket Error # 10060 Connection timed out
      end;
    end;
  end;

то возвращается ошибка Socket Error # 10060 Connection timed out.
вознающая после попытки SMTP.Connect;

Вопрос : что все это значит?
1. закончились времена когда можно было дергать сервера и проверять есть ли там указанный аккаунт?
2. надо проверять по 25 порту (хотя пример выше проверялся и по 25 и по 465, результат один и тот же)
3. возможно надо что то еще(типа старый старый TClientSocket или ICS), позабористее, но что канкретно?
Ответить с цитированием