Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Не соединяется IdSMTP для отправки писем / 12 сообщений из 12, страница 1 из 1
04.12.2014, 15:53
    #38825068
Николай II
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не соединяется IdSMTP для отправки писем
Задача: отправить письмо через аккаунт mail.ru
Кидаю на форму:
IdSMTP1
IdMessage1
IdSSLIOHandlerSocketOpenSSL1
Memo1

пишу:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
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
Самоучка
...
Рейтинг: 0 / 0
04.12.2014, 16:22
    #38825124
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не соединяется IdSMTP для отправки писем
Ставь сниффер и смотри куда пытается уйти SYN-пакет.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
04.12.2014, 16:45
    #38825160
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не соединяется IdSMTP для отправки писем
Николай IIIdSMTP1->Password = "F20142014"; //пароль
Это в инет не надо выкладывать.
Меняй пароль.
...
Рейтинг: 0 / 0
04.12.2014, 19:01
    #38825400
Николай II
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не соединяется IdSMTP для отправки писем
Dima T, я специально зарегистрировал аккаунт на мэйл.ру, чтобы те, кто будет пытаться мне помочь, могли скопировать код и сходу пробовать, я этой почтой не пользуюсь
...
Рейтинг: 0 / 0
04.12.2014, 21:04
    #38825502
Николай II
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не соединяется IdSMTP для отправки писем
Поставил сниффер 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 не может соедениться
...
Рейтинг: 0 / 0
04.12.2014, 21:40
    #38825523
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не соединяется IdSMTP для отправки писем
Николай II3. Шлет на полученный ИП адрес SYN пакет:

А какого чёрта оно это делает на 25-й порт?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
04.12.2014, 23:45
    #38825586
Николай II
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не соединяется IdSMTP для отправки писем
Dimitry Sibiryakov, я не знаю. Я и при проектировании ввел везде 465 и на программном уровне присваиваю 465. Неужели это глюк ...
...
Рейтинг: 0 / 0
04.12.2014, 23:47
    #38825588
Николай II
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не соединяется IdSMTP для отправки писем
Если запустить в режиме отладки, то переменная IdSMTP1->Port равна 465
...
Рейтинг: 0 / 0
05.12.2014, 01:28
    #38825625
Николай II
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не соединяется IdSMTP для отправки писем
С IdSMTP1->Connect(); разобрался - правильно так IdSMTP1->UseTLS=utUseImplicitTLS;
теперь все работает без исключений, но письма не отсылаются.
Сравнил данные снифферов моей проги и нормальной, отличаються, но в чем загвоздка ... подскажите пожалуйста.

Данные нормальной программы


Данные моей программы
...
Рейтинг: 0 / 0
05.12.2014, 02:11
    #38825638
Николай II
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не соединяется IdSMTP для отправки писем
Последняя информация: на ящики мэйл.ру и meta.ua отправляется успешно
но на ящики Яндекса не отправляется. Чего Яндексу может не хватать?
...
Рейтинг: 0 / 0
05.12.2014, 15:59
    #38826391
Николай II
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не соединяется IdSMTP для отправки писем
Супер пример отправки e-mail с помощью C++ Builder

Там показано все, кроме SSL, которое я показал в этой теме.

Там же показано как бороться со знаками вопроса кодировкой в теме сообщения и имени отправителя благодаря супер функции IdMessageInitializeISO, которую нужно объявить в Unit1.h потом написать в Unit1.cpp, а потом при создании формы присвоить
IdMessage1->OnInitializeISO = IdMessageInitializeISO;
только это помогло, весь интернет обшарил!
...
Рейтинг: 0 / 0
05.12.2014, 16:00
    #38826394
Николай II
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не соединяется IdSMTP для отправки писем
Спасибо всем, кто мне тут помогал!
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Не соединяется IdSMTP для отправки писем / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]