Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.77/111: Рейтинг темы: голосов - 111, средняя оценка - 4.77
 Аватар для Fermion
17 / 17 / 3
Регистрация: 05.10.2009
Сообщений: 172

Отправка E-mail

05.10.2009, 19:16. Показов 22487. Ответов 47
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Сразу скажу, что я полный ламер. Перерыв весь интернет понял, что сам я эту задачу никогда не решу. Есть куча примеров на Delphi и только один (не работающий) на C++ Builder. Если бы делал "для себя" сделал бы на Delphi и не парился, но мне ставят условие: обязательно на C++ Builder.

В общем задача простая... надо отправить письмо из программы.
Есть вот такой код:


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  IdMessage1->Body->Assign(Memo1->Lines);
  IdMessage1->From->Text = "F-ermion@mail.ru";
  IdMessage1->Subject  = "Testik subj";
  IdMessage1->Recipients->EMailAddresses = "F-ermion@yandex.ru";
  IdMessage1->Priority = TIdMessagePriority(mpHighest);
  IdMessage1->CCList->EMailAddresses = "F-ermion@yandex.ru";
 IdSMTP1->Host = "smtp.mail.ru";
 IdSMTP1->UserId = "F-ermion";
 IdSMTP1->Password = "******";
 IdSMTP1->Port = 25;
 IdSMTP1->MailAgent = "Test TidSMTP";
 IdSMTP1->AuthenticationType = atLogin;
}
компилятор на него не ругается... но при этом ничего никуда не оправляет. Кто подскажет, что тут не так?

И ещё... как можно отследить процесс... то есть как можно отслеживать ответы сервера, чтобы понимать на каком этапе происходит проблема.
1
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.10.2009, 19:16
Ответы с готовыми решениями:

Отправка на E-mail
есть вот такая штука std::auto_ptr-TStringList-ALL(new TStringList) её надо отправить на почту при нажатии кнопки.

Отправка почты на mail.ru
Здравствуйте!!! Ребята, подскажите, по такому вопросу. Знаю, что тема уже избита вдоль и в поперёк, но есть проблемы. Пытаюсь программно...

Отправка сообщений на e-mail
Здравствуйте! Мне необходимо отправить сообщение на почту. Нашел пример с компонентами IdSMTP1 и IdMessage1. Пример довольно короткий, но...

47
 Аватар для Fermion
17 / 17 / 3
Регистрация: 05.10.2009
Сообщений: 172
25.10.2009, 22:31  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от TURBOMAX Посмотреть сообщение
Скиньте проэкт рабочий с отправкой на mail плизз
Вот проект. Разумеется надо вписать свой СМТП сервер, вписать свой логин и вписать свой пароль. В качестве обратного адреса указать РЕАЛЬНЫЙ!
Вложения
Тип файла: rar Project.rar (341.6 Кб, 119 просмотров)
0
 Аватар для Fermion
17 / 17 / 3
Регистрация: 05.10.2009
Сообщений: 172
25.10.2009, 23:37  [ТС]
Да... тут ещё один "косячок" вылез... Если вы используете indy более чем 8, то строка:
C++
1
IdSMTP1->UserId = "F-ermion";
должна быть заменена на строку:
C++
1
IdSMTP1->Username = "F-ermion";
Вот такая фигня... блин..
0
 Аватар для Fermion
17 / 17 / 3
Регистрация: 05.10.2009
Сообщений: 172
28.10.2009, 00:45  [ТС]
Цитата Сообщение от Fermion Посмотреть сообщение
Вот проект.
Значит, господа! Этот проект был написан на C++ Builder 6. Там по умолчанию стоит indy8. И в таком варианте она работает без проблем. Но выяснилось, что при работе с более новыми indy возникают некоторые траблы.

Значит я себе сейчас поставил RAD Studio 2009 и буду реализовать тот же проект на нем.

Это я всё к чему? Это я к тому, что люди жаловались на то, что выплывают некоторые "косяки". Что вполне возможно.

В связи с чем вопрос (и предложение): Поскольку я не телепат, то просьба тех у кого выплывают косяки пишите сюда что за косяки (желательно подробно)... будем смотреть... кое какие соображения уже есть.
0
che_how
12.03.2010, 14:05
Цитата Сообщение от Fermion Посмотреть сообщение
Значит, господа! Этот проект был написан на C++ Builder 6. Там по умолчанию стоит indy8. И в таком варианте она работает без проблем. Но выяснилось, что при работе с более новыми indy возникают некоторые траблы.

Значит я себе сейчас поставил RAD Studio 2009 и буду реализовать тот же проект на нем.

Это я всё к чему? Это я к тому, что люди жаловались на то, что выплывают некоторые "косяки". Что вполне возможно.

В связи с чем вопрос (и предложение): Поскольку я не телепат, то просьба тех у кого выплывают косяки пишите сюда что за косяки (желательно подробно)... будем смотреть... кое какие соображения уже есть.
BCB6, NMSMTP, NMPOP3

тема, конечно, уже прошла.
Но есть вопросы.
Во-1х, host, UserId в NMSMTP - это данные получателя?
Во-2х. Если задача стоит опросить ящик (post1@mail.ru), прочитать сообщения в нем и отправить ответы по каждому сообщению в этом ящике тому, кто его направил, то как узнать SMTP-сервер получателя? ( у mail.ru это smtp.mail.ru , но у других они, могут иметь любые имена)
Волшебник
 Аватар для Rapsod
65 / 64 / 7
Регистрация: 21.11.2009
Сообщений: 319
13.03.2010, 13:59
Подскажите пожалуйста как сделать обработку неких исключений:

1. Если не конектится к серверу ( или отсутствует инет)
2. Если введен не правильный логин\пароль\E-mail..

А то если не правильно что нить ввести, как тут же прога откидывает коньки.. =(

Заранее благодарю!!!
0
 Аватар для lepotanko
0 / 0 / 0
Регистрация: 09.03.2010
Сообщений: 17
27.09.2010, 15:36
Цитата Сообщение от Fermion Посмотреть сообщение
Вот проект. Разумеется надо вписать свой СМТП сервер, вписать свой логин и вписать свой пароль. В качестве обратного адреса указать РЕАЛЬНЫЙ!
Перезалить можешь?Нужно посмотреть, а то cppшный файл поврежден, а когда делаю по твоему описанию то получаю пару ошибок.
0
 Аватар для Fermion
17 / 17 / 3
Регистрация: 05.10.2009
Сообщений: 172
28.09.2010, 21:04  [ТС]
Цитата Сообщение от che_how Посмотреть сообщение
BCB6, NMSMTP, NMPOP3
есть вопросы.
Во-1х, host, UserId в NMSMTP - это данные получателя?
Вопрос прямо скажем - странный. Вы когда-нибудь настраивали почтовый клиент типа TheBat или ОутГлююк? Вы параметры типа ПОП, СМТП и так далее там чьи настраивали, получателя? НИ В КОЕМ СЛУЧАЕ!!! Все параметры настраиваются для ВАШЕГО ящика!!! Для получателя указывается ТОЛЬКО адрес получателя.

Цитата Сообщение от che_how Посмотреть сообщение
BCB6, NMSMTP, NMPOP3
Во-2х. Если задача стоит опросить ящик (post1@mail.ru), прочитать сообщения в нем и отправить ответы по каждому сообщению в этом ящике тому, кто его направил, то как узнать SMTP-сервер получателя? ( у mail.ru это smtp.mail.ru , но у других они, могут иметь любые имена)
Ответ на первый вопрос - отвечает и на второй. Алгоритм работы будет следующий: конектитесь на ящик, смотрите первое письмо, вынимаете из него поле FROM, подставляете его в поле TO и отправляете получателю. И так пока не кончатся письма.
Другой вопрос, что если эти письма надо оставлять на сервере, то придется делать БД хранящую ID письма и по этим ИД сверять на какое из них уже было отвечено. Но проще (чтобы не геморроиться) просто те письма на которые уже отвечено удалять с сервера. Следовательно - что есть на сервере - все новое и проверять ничего не надо.

Добавлено через 5 минут
Цитата Сообщение от lepotanko Посмотреть сообщение
Перезалить можешь?Нужно посмотреть, а то cppшный файл поврежден
С перезалить сложно. Дело в том, что этот проект вылился в небольшой полностью готовый почтовый клиент с БД и так далее. Поэтому перезалить не проблема, но (так как это было год назад) надо немного подразобраться, а прямо сейчас нет на это времени. Если не горит, перезалью через несколько деньков.

Цитата Сообщение от lepotanko Посмотреть сообщение
а когда делаю по твоему описанию то получаю пару ошибок.
Что за ошибки? Может их легко исправить.
0
 Аватар для Fermion
17 / 17 / 3
Регистрация: 05.10.2009
Сообщений: 172
05.10.2010, 22:41  [ТС]
Цитата Сообщение от lepotanko Посмотреть сообщение
Перезалить можешь?
Перезалил
Вложения
Тип файла: rar client.rar (350.2 Кб, 64 просмотров)
1
 Аватар для Fermion
17 / 17 / 3
Регистрация: 05.10.2009
Сообщений: 172
05.10.2010, 23:19  [ТС]
Да... а шобы ЕХЕшник работал на компутере где не установлен C++Builder надо установить вот эту приблуду. Называется - драйвер баз данных.
Вложения
Тип файла: rar bdesetup.rar (4.69 Мб, 36 просмотров)
0
294 / 200 / 6
Регистрация: 23.10.2010
Сообщений: 1,173
Записей в блоге: 1
31.01.2011, 22:29
Цитата Сообщение от Fermion Посмотреть сообщение
Вот проект. Разумеется надо вписать свой СМТП сервер, вписать свой логин и вписать свой пароль. В качестве обратного адреса указать РЕАЛЬНЫЙ!
а где файл indy_SMTP_01.cpp сам код

Добавлено через 43 секунды
Цитата Сообщение от Fermion Посмотреть сообщение
Вот проект. Разумеется надо вписать свой СМТП сервер, вписать свой логин и вписать свой пароль. В качестве обратного адреса указать РЕАЛЬНЫЙ!
А где сам код. должен быть файл indy_SMTP_01.cpp
0
145 / 100 / 6
Регистрация: 11.03.2010
Сообщений: 477
16.03.2011, 16:26
кстати интересная штука с этим IdMessage.

почему то тело сообщения
IdMessage1->Body->Assign(Memo1->Lines);

помещается в файл ATT00001 без разширения.

это глюк какой-то?
как можно поправить ?

почту получаю аутлуком, пробовал на джимейл, там тоже вложение только уже нонейм

Добавлено через 2 часа 47 минут
Уж незнаю от чего это зависит, но если делать вот так:

C++
1
IdMessage1->Body->Add(RichEdit1->Text);
то текст письма вставляется как и должно быть.
1
Прогер
 Аватар для Programmer.
632 / 263 / 15
Регистрация: 17.11.2010
Сообщений: 1,371
Записей в блоге: 2
16.03.2011, 20:00
Цитата Сообщение от Fermion Посмотреть сообщение
IdSMTP1->AuthenticationType = atLogin;//с авторизацией
тут видает ощибку... Не асознает atLogin.
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
16.03.2011, 20:07
там что-то говорили про разные версии Инди.
1
Прогер
 Аватар для Programmer.
632 / 263 / 15
Регистрация: 17.11.2010
Сообщений: 1,371
Записей в блоге: 2
16.03.2011, 20:34
LK, У меня RAD studio XE какая версия у нее indy ?


как исправит ошибку?
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
16.03.2011, 21:04
Цитата Сообщение от Programmer. Посмотреть сообщение
RAD studio XE какая версия у нее indy ?
говорят, 10.

Добавлено через 4 минуты
а atNone; знает ?

Добавлено через 1 минуту
для общего развития IndyFAQ
1
Прогер
 Аватар для Programmer.
632 / 263 / 15
Регистрация: 17.11.2010
Сообщений: 1,371
Записей в блоге: 2
16.03.2011, 21:06
Цитата Сообщение от LK Посмотреть сообщение
говорят, 10.
а как ошибку исправить? : (
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
16.03.2011, 21:21
текст ошибки какой ?
а так :
C++
1
IdSMTP1->AuthType = satDefault;
Пример для INDY 10.5.5
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
IdMessage1->From->Name = "FromName"; // отправитель
IdMessage1->From->Address = "from@address.com"; // адресс
IdMessage1->Recipients->EMailAddresses = "еш@address.com"; // получатель
IdMessage1->Subject = "Тема";
IdMessage1->Body->Append(Memo1->Text); // текст сообщения
 
IdSMTP1->Host = "smtp.address.com"; // SMTP
IdSMTP1->Password = "скажы_парол"; // пароль
IdSMTP1->Username = "address.com"; // ID пользователя
IdSMTP1->Port = 587;
IdSMTP1->AuthType = satDefault;
IdSMTP1->UseTLS = utNoTLSSupport;
 
for(int i = 0; i < ListBox1->Items->Count; ++i)
{
 IdMessage1->MessageParts->Add();
 new TIdAttachmentFile(IdMessage1->MessageParts, ListBox1->Items->Strings[i]);
}
IdSMTP1->Connect();
 
try
{
 IdSMTP1->Send(IdMessage1);
}
__finally
{
 IdSMTP1->Disconnect();
}
IdMessage1->MessageParts->Clear();
1
Прогер
 Аватар для Programmer.
632 / 263 / 15
Регистрация: 17.11.2010
Сообщений: 1,371
Записей в блоге: 2
16.03.2011, 22:04
1.[BCC32 Error] Unit9.cpp(38): E2451 Undefined symbol 'atLogin'
Full parser context
Unit9.cpp(25): parsing: void _fastcall TForm9::Button1Click(TObject *)
Цитата Сообщение от LK Посмотреть сообщение
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
IdMessage1->From->Name = "FromName"; // отправитель
IdMessage1->From->Address = "from@address.com"; // адресс
IdMessage1->Recipients->EMailAddresses = "еш@address.com"; // получатель
IdMessage1->Subject = "Тема";
IdMessage1->Body->Append(Memo1->Text); // текст сообщения
IdSMTP1->Host = "smtp.address.com"; // SMTP
IdSMTP1->Password = "скажы_парол"; // пароль
IdSMTP1->Username = "address.com"; // ID пользователя
IdSMTP1->Port = 587;
IdSMTP1->AuthType = satDefault;
IdSMTP1->UseTLS = utNoTLSSupport;
for(int i = 0; i < ListBox1->Items->Count; ++i)
{
 IdMessage1->MessageParts->Add();
 new TIdAttachmentFile(IdMessage1->MessageParts, ListBox1->Items->Strings[i]);
}
IdSMTP1->Connect();
try
{
 IdSMTP1->Send(IdMessage1);
}
__finally
{
 IdSMTP1->Disconnect();
}
IdMessage1->MessageParts->Clear();
а тут

[BCC32 Error] Unit9.cpp(42): E2379 Statement missing ;
Full parser context
Unit9.cpp(25): parsing: void _fastcall TForm9::Button1Click(TObject *)

[BCC32 Error] Unit9.cpp(42): E2303 Type name expected
Full parser context


канкретнее обе ошибки тут:

C++
1
new TIdAttachmentFile(IdMessage1->MessageParts, ListBox1->Items->Strings[i]);
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
16.03.2011, 22:33
блин, ты когда-нибудь код смотреть будешь ? я тебе пример привел, а не "готовое решение на все случаи жизни..."
файл прикрепленный убери:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
IdMessage1->Body->Append(Memo1->Text); // текст сообщения
IdSMTP1->Host = "smtp.address.com"; // SMTP
IdSMTP1->Password = "скажы_парол"; // пароль
IdSMTP1->Username = "address.com"; // ID пользователя
IdSMTP1->Port = 587;
IdSMTP1->AuthType = satDefault;
IdSMTP1->UseTLS = utNoTLSSupport;
/*
for(int i = 0; i < ListBox1->Items->Count; ++i)
{
 IdMessage1->MessageParts->Add();
 new TIdAttachmentFile(IdMessage1->MessageParts, ListBox1->Items->Strings[i]);
}
*/
IdSMTP1->Connect();
try
{
 IdSMTP1->Send(IdMessage1);
}
__finally
{
 IdSMTP1->Disconnect();
}
и
"smtp.address.com" // SMTP
"скажы_парол" // пароль
"address.com"
свои укажи - эти - работать не будут!!! .
1
Прогер
 Аватар для Programmer.
632 / 263 / 15
Регистрация: 17.11.2010
Сообщений: 1,371
Записей в блоге: 2
17.03.2011, 12:48
Всё роботает спасибо всем... особенно LK


Вот собственно и прог...
Вложения
Тип файла: rar mailer.rar (705.9 Кб, 121 просмотров)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.03.2011, 12:48
Помогаю со студенческими работами здесь

Отправка множества сообщений на mail.ru
Посылатор сообщений через мыло. В идеале - программа должны отправлять несколько писем подряд Что есть Код логина.(логинов несколько,...

Отправка на E-mail сообщения с прикрепленным файлом
Для отправки простого письма на E-mail используйте ниже приведенный код На форму нужно бросить: IdSMTP1 и Memo1. Код можно вставить...

Отправка через SMTP писем с mail.ru на yandex.ru
Всем доброго времени суток. На этот раз проблема состоит в следующем: нужно отправить сообщение с ящика mail.ru на ящик yandex.ru и на...

Отправка письма на mail.ru через PHP mail()
Добрый день! Перелопатил много чего. Подскажите как все-таки отправить письмо на мэил.ру при помощи маил()? Может какие-то особенные...

Отправка e-mail
Всем привет, у меня есть вопрос, как с помощью c++ отправлять e-mail сообщения, возможно-ли это сделать библиотекой 'winsock'? Просьба...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru