Не соединяется IdSMTP для отправки писем

Николай II
Дата: 04.12.2014 15:53:16
Задача: отправить письмо через аккаунт mail.ru
Кидаю на форму:
IdSMTP1
IdMessage1
IdSSLIOHandlerSocketOpenSSL1
Memo1

пишу:
IdMessage1->From->Address="kria2010@mail.ru";
IdMessage1->Recipients->EMailAddresses = "kria2010@mail.ru";//Адрес получателя
IdMessage1->Subject  = "Mail From Control";//Заголовок письма   UTF8Encode(subject.Text);
IdMessage1->Body->Assign(Memo1->Lines);//тут мы берем текст из Memo

IdSMTP1->Port = 465;
IdSMTP1->Host = "smtp.mail.ru"; //адрес smtp сервера
IdSMTP1->Username = "kria2010@mail.ru"; //Логин
IdSMTP1->Password = "F20142014"; //пароль
IdSMTP1->AuthType = satDefault;//с авторизацией

IdSSLIOHandlerSocketOpenSSL1->Destination=IdSMTP1->Host+":"+IntToStr(IdSMTP1->Port);
IdSSLIOHandlerSocketOpenSSL1->Host=IdSMTP1->Host;
IdSSLIOHandlerSocketOpenSSL1->Port=IdSMTP1->Port;
IdSSLIOHandlerSocketOpenSSL1->DefaultPort=0;
IdSSLIOHandlerSocketOpenSSL1->SSLOptions->Method=sslvTLSv1;
IdSSLIOHandlerSocketOpenSSL1->SSLOptions->Mode=sslmUnassigned;
IdSMTP1->IOHandler=IdSSLIOHandlerSocketOpenSSL1;
IdSMTP1->UseTLS=utUseExplicitTLS;

try //дальше собственно отправка и обработка кое каких исключений
   {
    try
       {
          if (IdSMTP1->Connected()) IdSMTP1->Disconnect();
              IdSMTP1->Connect();


			  //IdSMTP1->Send(IdMessage1);
	   }
       catch (Exception &exception)
            {
             IdSMTP1->Disconnect();
			 MessageDlg("Application, may not connected", mtError, TMsgDlgButtons() << mbYes, 0);
             Abort;
            }
             // My Code Here
    }
     catch (Exception &exception)
          {
           Application->ShowException(&exception);
           IdSMTP1->Disconnect();
		  }


Получаю:
На этапе IdSMTP1->Connect();
Socket error # 10051 NetWork is unreachable.

Почтовые программы соединяются с mail.ru с этими же логинами-паролями без проблем.
Стоит Касперский Интернет Секьюрити, пробовал сделать приостановку защиты, не помогло.
-------------------------
C++ Builder XE
Самоучка
Dimitry Sibiryakov
Дата: 04.12.2014 16:22:29

Ставь сниффер и смотри куда пытается уйти SYN-пакет.

Posted via ActualForum NNTP Server 1.5

Dima T
Дата: 04.12.2014 16:45:44
Николай II
IdSMTP1->Password = "F20142014"; //пароль

Это в инет не надо выкладывать.
Меняй пароль.
Николай II
Дата: 04.12.2014 19:01:14
Dima T, я специально зарегистрировал аккаунт на мэйл.ру, чтобы те, кто будет пытаться мне помочь, могли скопировать код и сходу пробовать, я этой почтой не пользуюсь
Николай II
Дата: 04.12.2014 21:04:21
Поставил сниффер WireShark.
В начале я "запеленговал" что отправляет рабочая почтовая программа сторонних разработчиков:

1. Спрашивает ИП-адрес для хоста smtp.mail.ru:
DNS Standard query 0xeef9 A smtp.mail.ru

2. Получает ответ:
DNS Standard query response 0x020e A 217.69.139.160 A 94.100.180.160

3. Шлет на полученный ИП адрес SYN пакет:
217.69.139.160 TCP 51959→465 [SYN] Seq=0 Win=8192 Len=0 MSS=1460 WS=4 SACK_PERM=1

4. Получает ответ
TCP 465→51959 [SYN, ACK] Seq=0 Ack=1 Win=5640 Len=0 MSS=1360 SACK_PERM=1

и дальше погнало ssl и т.д.

А вот что делает моя программа:
1. Спрашивает ИП-адрес для хоста smtp.mail.ru:
DNS Standard query 0xeef9 A smtp.mail.ru

2. Получает ответ:
DNS Standard query response 0xeef9 A 217.69.139.160 A 94.100.180.160

3. Шлет на полученный ИП адрес SYN пакет:
TCP 51997→25 [SYN] Seq=0 Win=8192 Len=0 MSS=1460 WS=4 SACK_PERM=1

4. не получив ответа шлет еще (в программе выделено черным цветом)
TCP [TCP Retransmission] 51997→25 [SYN] Seq=0 Win=8192 Len=0 MSS=1460 WS=4 SACK_PERM=1

5. потом еще шлет
UDP Source port: 64103 Destination port: 1947
TCP [TCP Retransmission] 51997→25 [SYN] Seq=0 Win=8192 Len=0 MSS=1460 SACK_PERM=1
UDP Source port: 64103 Destination port: 1947
TCP [TCP Retransmission] 51997→25 [SYN] Seq=0 Win=8192 Len=0 MSS=1460 SACK_PERM=1
UDP Source port: 64103 Destination port: 1947


Потом моя программа выдает исключение: IdHTTP не может соедениться
Dimitry Sibiryakov
Дата: 04.12.2014 21:40:40

Николай II
3. Шлет на полученный ИП адрес SYN пакет:

А какого чёрта оно это делает на 25-й порт?..

Posted via ActualForum NNTP Server 1.5

Николай II
Дата: 04.12.2014 23:45:33
Dimitry Sibiryakov, я не знаю. Я и при проектировании ввел везде 465 и на программном уровне присваиваю 465. Неужели это глюк ...
Николай II
Дата: 04.12.2014 23:47:01
Если запустить в режиме отладки, то переменная IdSMTP1->Port равна 465
Николай II
Дата: 05.12.2014 01:28:37
С IdSMTP1->Connect(); разобрался - правильно так IdSMTP1->UseTLS=utUseImplicitTLS;
теперь все работает без исключений, но письма не отсылаются.
Сравнил данные снифферов моей проги и нормальной, отличаються, но в чем загвоздка ... подскажите пожалуйста.

Данные нормальной программы
Картинка с другого сайта.

Данные моей программы
Картинка с другого сайта.
Николай II
Дата: 05.12.2014 02:11:02
Последняя информация: на ящики мэйл.ру и meta.ua отправляется успешно
но на ящики Яндекса не отправляется. Чего Яндексу может не хватать?