Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.80/25: Рейтинг темы: голосов - 25, средняя оценка - 4.80
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3

Отправка почты на mail.ru

05.07.2015, 23:54. Показов 4918. Ответов 32
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!!! Ребята, подскажите, по такому вопросу. Знаю, что тема уже избита вдоль и в поперёк, но есть проблемы.
Пытаюсь программно отправить сообщение в свой почтовый ящик в качестве примера отправляю из своего почтового ящика в свой же почтовый ящик письмо (сообщение), но при отправке выкидывает ошибку (см. скриншот) Использую 25 порт

Вот код
C++
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
void __fastcall TForm1::FormShow(TObject *Sender)
{
 
   Edit2->PasswordChar = '*';
   Edit3->PasswordChar = '*';
   Edit5->Text = "blabla@mail.ru";
   Memo1->Clear();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 
 IdMessage1->From->Text = "Привет";
 IdMessage1->Subject="blabla@mail.ru";
 IdMessage1->Recipients->EMailAddresses = Edit5->Text;
 IdMessage1->Body->Text = Memo1->Text;
 IdMessage1->ContentType = "text/plain; charset=windows-1251";
 IdMessage1->CharSet = "windows-1251";
 IdMessage1->ContentTransferEncoding = "8BITMIME";
 
 IdSMTP1->Connect();
if (IdSMTP1->Connected())
{
  IdSMTP1->Send(IdMessage1);
}
  IdSMTP1->Disconnect();
 
}
 
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
 Edit1->Text = "smtp.mail.ru";
 IdSMTP1->Host = Edit1->Text;
 IdSMTP1->Username = "blabla@mail.ru";
 IdSMTP1->Password = "**********";
 IdSMTP1->UseTLS=utNoTLSSupport;
 IdSMTP1->Port = 25;
}
//---------------------------------------------------------------------------
Заранее благодарен за ответ
Изображения
 
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.07.2015, 23:54
Ответы с готовыми решениями:

Отправка почты
скажите пожалуйста как сделать чтобы при вводе в Edit1,..... и нажатие на кнопку произошла отправка почты.может компонент какой-то для...

Отправка почты
Добрый день. Подскажите, пожалуйста, как реализуется процесс отправки почты в среде С++ Builder. Хотелось бы, чтобы при нажатии...

Отправка электронной почты
Добрый день. Пытаюсь отправить электронное письмо. После соединения с smtp.list.ru ("94.100.177.4") порт 25 получаю...

32
1408 / 572 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
06.07.2015, 00:26
кинь на форму IdSSLIOHandlerSocketOpenSSL
C++
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
 /*-----------------------------------------------*/
 String Host = "smpt.mail.ru";
 int Port = 25;
 String Username = "blabla@mail.ru";
 String Pass = "mypass";
 
 String EMailAddresses = "blabla@mail.ru"; // кому
 String Subject = "Тема №1";
 String Body = "Привет";
 /*-----------------------------------------------*/
 
 IdSMTP->Host = Host;
 IdSMTP->Port = Port;
 IdSMTP->Username = Username;
 IdSMTP->Password = Pass;
 IdSMTP->AuthType = satDefault;
 
 IdSSLIOHandlerSocketOpenSSL->Destination = Host+":"+IntToStr(Port);
 IdSSLIOHandlerSocketOpenSSL->Host = Host;
 IdSSLIOHandlerSocketOpenSSL->Port = Port;
 IdSSLIOHandlerSocketOpenSSL->SSLOptions->Method = sslvSSLv3;
 
 IdSMTP->IOHandler = IdSSLIOHandlerSocketOpenSSL;
 IdSMTP->UseTLS = utUseImplicitTLS;
 
 IdSMTP->Connect();
 
 IdMessage->Clear();
 IdMessage->Encoding = mePlainText;
 IdMessage->ContentType = "text/plain";
 IdMessage->CharSet = "UTF-8";
 IdMessage->ContentTransferEncoding = "base64";
 IdMessage->Subject = Subject;
 IdMessage->Body->Text = Body;
 IdMessage->From->Text = IdSMTP->Username;
 IdMessage->Recipients->EMailAddresses = EMailAddresses;
 
 IdSMTP->Send(IdMessage);
Добавлено через 1 минуту
может кто подскажет, без IdSMTP->IOHandler можна хоть что-то отправить или нет?
1
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
08.07.2015, 00:41
Цитата Сообщение от _Dimon_ Посмотреть сообщение
может кто подскажет, без IdSMTP->IOHandler можна хоть что-то отправить или нет?
Без SSL имелось ввиду? По большому счету никак, почти все почтовые серверы отказались от подключения без шифрования.

Добавлено через 1 минуту
Это
C++
1
2
3
4
 IdSSLIOHandlerSocketOpenSSL->Destination = Host+":"+IntToStr(Port);
 IdSSLIOHandlerSocketOpenSSL->Host = Host;
 IdSSLIOHandlerSocketOpenSSL->Port = Port;
 IdSSLIOHandlerSocketOpenSSL->SSLOptions->Method = sslvSSLv3;
лишнее....

Добавлено через 7 минут
Кстати можно еще так: http://avazart.zz.mu/2014/10/tidsmtp/
2
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
08.07.2015, 15:43  [ТС]
Avazart, спасибо за ссылку, но при компиляции выдаёт ошибку

C++
1
2
3
4
5
6
7
String __fastcall EncodeQuotedUtf8(UnicodeString Text)
{
  return
    L"=?UTF-8?Q?"+
    Form1->IdEncoderQuotedPrintable1->EncodeString(Text,TEncoding::UTF8).TrimRight()+
    L"?=";
}
E2285 Could not find a match for 'TIdEncoder::EncodeString(UnicodeString, TEncoding *)'
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
08.07.2015, 15:48
Ну так новый билдер и там указано что должны быть компоненты на форме.
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
08.07.2015, 15:52  [ТС]
Так я эти компоненты перетянул на форму, но эффекта никакого

Добавлено через 38 секунд
Работаю С++ Builder XE4
0
1408 / 572 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
08.07.2015, 15:53
я вместо ф-ции EncodeQuotedUtf8 использовал событие TIdMessage.OnInitializeISO

C++
1
2
3
4
5
6
7
void __fastcall TfIndySMTP::IdMessageInitializeISO(System::WideChar &VHeaderEncoding,
          UnicodeString &VCharSet)
{
 VCharSet = L"UTF-8";
 VHeaderEncoding = L'B';
}
//---------------------------------------------------------------------------
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
08.07.2015, 16:00  [ТС]
_Dimon_, спасибо за розъяснение, но мне всё таки интересно как избавиться от ошибки в коде, который предоставил мне Avazart
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
08.07.2015, 16:02
Цитата Сообщение от Sasha Посмотреть сообщение
Работаю С++ Builder XE4
Значит что-то изменили в интерфейсе Indy (я писал в XE3) нужно посмотреть что и поправить, для этого достаточно пошуршать по хедерам Indy.
0
1408 / 572 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
08.07.2015, 16:38
Sasha, так вроде работает (на xe7 точно)

C++
1
2
3
4
5
6
7
String __fastcall EncodeQuotedUtf8(UnicodeString Text)
{
  return
    L"=?UTF-8?Q?"+
    Form1->IdEncoderQuotedPrintable1->EncodeString(Text, IndyTextEncoding_UTF8()).TrimRight()+
    L"?=";
}
3
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
08.07.2015, 16:50  [ТС]
_Dimon_, а как тогда с вот этой вот функцией?

C++
1
2
3
4
5
6
String __fastcall EncodeBase64Win(UnicodeString Text)
{
   return L"=?windows-1251?B?"+
      Form1->IdEncoderMIME1->EncodeString(Text,TEncoding::GetEncoding(1251))+
      L"?=";
}
Добавлено через 2 минуты
Тут точно такая же ошибка
0
1408 / 572 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
08.07.2015, 17:02
Sasha, думаю что IndyTextEncoding(1251)

Добавлено через 4 минуты
кусок из IdGlobal.hpp

C++
1
2
3
4
5
6
7
8
9
10
11
12
extern DELPHI_PACKAGE _di_IIdTextEncoding __fastcall IndyTextEncoding(IdTextEncodingType AType)/* overload */;
extern DELPHI_PACKAGE _di_IIdTextEncoding __fastcall IndyTextEncoding(System::Word ACodepage)/* overload */;
extern DELPHI_PACKAGE _di_IIdTextEncoding __fastcall IndyTextEncoding(const System::UnicodeString ACharSet)/* overload */;
extern DELPHI_PACKAGE _di_IIdTextEncoding __fastcall IndyTextEncoding(System::Sysutils::TEncoding* AEncoding)/* overload */;
extern DELPHI_PACKAGE _di_IIdTextEncoding __fastcall IndyTextEncoding_Default(void);
extern DELPHI_PACKAGE _di_IIdTextEncoding __fastcall IndyTextEncoding_OSDefault(void);
extern DELPHI_PACKAGE _di_IIdTextEncoding __fastcall IndyTextEncoding_8Bit(void);
extern DELPHI_PACKAGE _di_IIdTextEncoding __fastcall IndyTextEncoding_ASCII(void);
extern DELPHI_PACKAGE _di_IIdTextEncoding __fastcall IndyTextEncoding_UTF16BE(void);
extern DELPHI_PACKAGE _di_IIdTextEncoding __fastcall IndyTextEncoding_UTF16LE(void);
extern DELPHI_PACKAGE _di_IIdTextEncoding __fastcall IndyTextEncoding_UTF7(void);
extern DELPHI_PACKAGE _di_IIdTextEncoding __fastcall IndyTextEncoding_UTF8(void);
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
09.07.2015, 09:54  [ТС]
Avazart, сделал всё по твоей ссылке, но при нажатии на кнопку отправки вылетает вот такое сообщение
Изображения
 
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
09.07.2015, 13:28
Ну так а TIdSSLIOHandlerSocketOpenSSL подключать кто будет?

Добавлено через 1 минуту
Цитата Сообщение от _Dimon_ Посмотреть сообщение
я вместо ф-ции EncodeQuotedUtf8 использовал событие TIdMessage.OnInitializeISO
А этот прием давно уже не работает (гдето с девятых индей)
1
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
09.07.2015, 14:00  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
Ну так а TIdSSLIOHandlerSocketOpenSSL подключать кто будет?
Avazart, в твоём примере TIdSSLIOHandlerSocketOpenSSL небыло
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
09.07.2015, 14:23
Цитата Сообщение от Sasha Посмотреть сообщение
Avazart, в твоём примере TIdSSLIOHandlerSocketOpenSSL небыло
Что значит небыло, как без него, настройки та SSL- ные? Или в дизайнере теяжело связать, не все же в коде писать?
2
1408 / 572 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
09.07.2015, 15:38
Цитата Сообщение от Avazart Посмотреть сообщение
А этот прием давно уже не работает (гдето с девятых индей)
проверил, что странно, что для UTF-8 работает, а для windows-1251 нет
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
09.07.2015, 15:42  [ТС]
Avazart, коде добавил вот эту строку
C++
1
 IdSMTP1->IOHandler = IdSSLIOHandlerSocketOpenSSL1;
Но ошибка осталась может надо ещё где-нить что-то дописать?
0
1408 / 572 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
09.07.2015, 15:45
Sasha, можно просто в дизайнере компоненту IdSMTP1 в свойство IOHandler поставить IdSSLIOHandlerSocketOpenSSL1
1
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
09.07.2015, 16:12  [ТС]
Цитата Сообщение от _Dimon_ Посмотреть сообщение
Sasha, можно просто в дизайнере компоненту IdSMTP1 в свойство IOHandler поставить IdSSLIOHandlerSocketOpenSSL1
_Dimon_, добавил эту строку в
C++
1
2
3
4
void __fastcall TForm1::FormCreate(TObject *Sender)
{
  IdSMTP1->IOHandler = IdSSLIOHandlerSocketOpenSSL1;
}
Прокатило.

Но теперь другя ошибка при нажатии на кнопку вылетает вот такая вот ошибка
Изображения
 
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.07.2015, 16:12
Помогаю со студенческими работами здесь

IdPOP3. Проверка почты на mail.ru. Неверная кодировка текста.
Пишу код: //--------------------------------------------------------------------------- void __fastcall TForm2::Button2Click(TObject...

Отправка почты через Outlook
Здравствуйте! Тема избита, но все равно не могу найти решение. Делаю как предлагают в...

Отправка почты без indy
Всем доброго времени суток. У меня такая проблема писал почтовый клиент, всё отправляет, но ошибка кодировки, "перелопатил гору"...

Отправка почты в другом потоке
Народ, мне надо отправить почту в дугом потоке, чтобы програ не висла. С помощью компонентов NMSMTP или IdSMTP. Программу написал, в...

IdSMTP - Отправка почты через прокси
Добрый день. Появился вот такой вопрос: хочу сделать в своей программе отправку сообщения на емайл. Вот код: //на форме INDI //...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru