powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Не соединяется IdSMTP для отправки писем
12 сообщений из 12, страница 1 из 1
Не соединяется IdSMTP для отправки писем
    #38825068
Николай II
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задача: отправить письмо через аккаунт 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
Не соединяется IdSMTP для отправки писем
    #38825124
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ставь сниффер и смотри куда пытается уйти SYN-пакет.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Не соединяется IdSMTP для отправки писем
    #38825160
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Николай IIIdSMTP1->Password = "F20142014"; //пароль
Это в инет не надо выкладывать.
Меняй пароль.
...
Рейтинг: 0 / 0
Не соединяется IdSMTP для отправки писем
    #38825400
Николай II
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T, я специально зарегистрировал аккаунт на мэйл.ру, чтобы те, кто будет пытаться мне помочь, могли скопировать код и сходу пробовать, я этой почтой не пользуюсь
...
Рейтинг: 0 / 0
Не соединяется IdSMTP для отправки писем
    #38825502
Николай II
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поставил сниффер 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
Не соединяется IdSMTP для отправки писем
    #38825523
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Николай II3. Шлет на полученный ИП адрес SYN пакет:

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

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


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

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

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


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