Форум программистов, компьютерный форум, киберфорум
Наши страницы

C++ Builder

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.93
iiwanc
1 / 1 / 0
Регистрация: 04.03.2013
Сообщений: 82
#1

Почтовый клиент. Ошибка при отправке письма - C++ Builder

17.06.2013, 20:48. Просмотров 1783. Ответов 8
Метки нет (Все метки)

Здравствуйте!
Создаю простенькую программу, в ней делаю функцию, с помощью которой пользователь сможет отправлять разработчику отзывы, рекомендации. В общем, обратную связь.
Я только начинаю постигать азы программирования и по этому появляются вопросы.
И так:
Если в Edit1 забить адрес разработчика, то получается, что я сам сибе пишу и письмо доходит. Но если другой адрес забить, то выдает: "Sender address rejected: not owned by auth user" и письмо не отправляется. Адрес ящика пишу существующий.
Вот код:
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
void __fastcall TForm1::FormCreate(TObject *Sender)
{
IdSMTP1->Host = "smtp.yandex.ru";
IdSMTP1->Port = 25; //Используемый порт
IdSMTP1->Username = "******"; // Пишем  логин от почты
IdSMTP1->Password = "******"; // Пишем  пароль от почты
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
IdMessage1->Clear();
IdMessage1->From->Text = Edit1->Text;
IdMessage1->Recipients->EMailAddresses ="******@yandex.ru";
IdMessage1->Subject = Edit2->Text;
IdMessage1->Body->Text = Memo1->Text;
 
IdSMTP1->Connect();
if (IdSMTP1->Connected())
IdSMTP1->Send(IdMessage1);
else
IdSMTP1->Disconnect();
 
ShowMessage(Edit1->Text+", "+"ваше письмо успешно отправлено!");
 
ModalResult=mrOk;
}
Мне будет достаточно, чтобы приходило письмо с темой и обратным адресом. Подскажите, пожалуйста, как исправить ошибку. Уже неделю мучаюсь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.06.2013, 20:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Почтовый клиент. Ошибка при отправке письма (C++ Builder):

Отправка письма через почтовый клиент - C++ Builder
Доброе утро, товарищи. Назрел тут один вопрос. Требуется отправить письмо через почтовый клиент "The Bat!". Он настроен в системе ...

Проблема с кодировкой при отправке письма - C++ Builder
Здравствуйте. Пишу курсовую на тему "Почтовый клиент" на С++ Builder (EmbarcaderoRAD Studio XE) Возникла проблема: При отправке...

Как при отправке письма дать пользователю выбор адресующему в плане отправки на почту? - C++ Builder
Здравствуйте! Написал программу, в который отправляю опр. одинаковое письма с одной почту на другую. Подскажите пожалуйста кодом -> ...

Ошибка при отправке POST запроса - C++ Builder
Ситуация в следующем программа которую сделал отправляет пост запрос на https выдает ошибку "Could not load SSL Library". У меня на...

Почтовый клиент - C++ Builder
try{ IdPOP3->Host="pop.mail.ru"; ProgressBar->Position=10; IdPOP3->Port=110; ProgressBar->Position=20; ...

Ошибка при отправке почты через smtp.rambler.ru - C++ Builder
Доброе, все, время суток! Проблема: отправляю почтовое сообщение через TIdSMTP сервер. Пример взял уж не помню где и когда, с ним раньше...

8
AntonChik
1084 / 582 / 21
Регистрация: 11.11.2008
Сообщений: 1,544
18.06.2013, 13:34 #2
Цитата Сообщение от iiwanc Посмотреть сообщение
Если в Edit1 забить адрес разработчика, то получается, что я сам сибе пишу и письмо доходит. Но если другой адрес забить, то выдает: "Sender address rejected: not owned by auth user" и письмо не отправляется.
ну дак все правильно, вот и отправляй сам себе, а мыло юзера в тело пихай.
а так ты пытаешься отправлять от имени юзера, а его пароль не вводишь(потому как не знаешь).
либо используй другой smtp сервер, который позволяет отправлять анонимно.

а может ты просто попутал смысл строк 12 и 13
0
iiwanc
1 / 1 / 0
Регистрация: 04.03.2013
Сообщений: 82
18.06.2013, 18:19  [ТС] #3
Цитата Сообщение от AntonChik Посмотреть сообщение
ну дак все правильно, вот и отправляй сам себе, а мыло юзера в тело пихай.
а так ты пытаешься отправлять от имени юзера, а его пароль не вводишь(потому как не знаешь).
либо используй другой smtp сервер, который позволяет отправлять анонимно.

а может ты просто попутал смысл строк 12 и 13
в тело адрес юзера пихать это как?
0
AntonChik
1084 / 582 / 21
Регистрация: 11.11.2008
Сообщений: 1,544
19.06.2013, 05:07 #4
в тело или даже в тему
C++
1
2
3
4
IdMessage1->From->Text = YourEMail;
IdMessage1->Recipients->EMailAddresses = YourEMail;
IdMessage1->Subject = Edit2->Text+" from "+Edit1->Text;
IdMessage1->Body->Text = Memo1->Text;//+" from "+Edit1->Text;
1
iiwanc
1 / 1 / 0
Регистрация: 04.03.2013
Сообщений: 82
19.06.2013, 09:25  [ТС] #5
большое спасибо, все работает
теперь хотелось бы с кодировкой письма разобраться. приходят вместо кириллицы вопросительные знаки
0
AntonChik
1084 / 582 / 21
Регистрация: 11.11.2008
Сообщений: 1,544
19.06.2013, 09:29 #6
C++
1
2
3
4
IdMessage1->ContentType = "text/plain; charset=windows-1251";
IdMessage1->CharSet = "Windows-1251";
IdMessage1->ContentTransferEncoding = "8BITMIME";
IdMessage1->Body->Add(WinToUnicode(BodyTxt));
C++
1
2
3
4
5
6
7
8
9
10
11
String WinToUnicode(const String St)
{
 String Result="";
 for (int i = 1; i <= St.Length(); i++)
 {
  if (int(St[i])>= 0x00C0 && int(St[i])<= 0x00FF)
    Result += wchar_t(int(St[i])+0x350);
  else Result += St[i];
 }
 return Result;
}
1
iiwanc
1 / 1 / 0
Регистрация: 04.03.2013
Сообщений: 82
21.06.2013, 16:32  [ТС] #7
само письмо правильно приходит, а тема по прежнему вопросительные знаки
0
AntonChik
1084 / 582 / 21
Регистрация: 11.11.2008
Сообщений: 1,544
24.06.2013, 05:31 #8
аналогично
C++
1
2
IdMessage1->Body->Add(WinToUnicode(BodyTxt));
IdMessage1->Subject = WinToUnicode (Edit2->Text+" from "+Edit1->Text);
0
iiwanc
1 / 1 / 0
Регистрация: 04.03.2013
Сообщений: 82
27.06.2013, 20:49  [ТС] #9
Не знаю, корректный код или нет, но теперь мне приходят письма с правильной кириллицей в теме и в теле сообщения. В коде я указывал одинаковый ящик что для отправки, что для принятия. Получалось, как бы сам себе письмо отправлял. Оба ящика на Яндексе.
Выкладываю код, может кому пригодится. Писал программу на С++ Builder XE4, которая входит в состав Embarcadero RAD Studio XE4

В общем, проблему РЕШИЛ таким вот образом:

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
void __fastcall TForm2::FormCreate(TObject *Sender)
{
IdSMTP1->Host = "smtp.yandex.ru";
IdSMTP1->Port = 25; //Используемый порт
IdSMTP1->Username = "*******"; // Пишем  логин от почты
IdSMTP1->Password = "*******";    // Пишем  пароль от почты
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button1Click(TObject *Sender)
{
IdMessage1->Clear();
IdMessage1->From->Text = "*******@yandex.ru";  // Пишем почту, с которой отправляем письмо
IdMessage1->Recipients->EMailAddresses ="*******@yandex.ru";  // Пишем почту, на которое Получаем письмо
IdMessage1->Subject = Edit2->Text;
IdMessage1->Body->Text ="E-Mail пользователя:" + Edit1->Text + Memo1->Text;
IdMessage1->ContentType = "text/plain; charset=windows-1251";
 
IdMessage1->CharSet = "utf-8";
SysLocale.PriLangID = LANG_SYSTEM_DEFAULT; // если не поставить, то Indy будет оборачивать в koi8-r заголовки
IdMessage1->ContentTransferEncoding = "base64";
 
IdSMTP1->Connect();
if (IdSMTP1->Connected())
IdSMTP1->Send(IdMessage1);
else
IdSMTP1->Disconnect();
 
ShowMessage(Edit1->Text+", "+"ваше письмо успешно отправлено!");
 
ModalResult=mrOk;
Ниже скриншот самой программы:
0
Миниатюры
Почтовый клиент. Ошибка при отправке письма  
27.06.2013, 20:49
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.06.2013, 20:49
Привет! Вот еще темы с ответами:

Почтовый клиент. Получение писем через POP3 - C++ Builder
Собственно ниже приведен код программы, но письма не приходят, подскажите что почем? Например pop.yandex.ru, порт 995. void __fastcall...

Соединение данных при отправке через сокет - C++ Builder
Доброго времени суток. Сейчас возникла непредвиденная проблема, сокет начал отправлять сообщения сгрупированно, то есть ...

Завис процесс при отправке файла через TServerSocket - C++ Builder
Пишу FTP сервер, используя TServerSocket. Клиент для тестирования - это windows ftp через дос-оболочку. При чтении данных: если от...

Некорректное отображение русских букв при отправке письма на почтовый ящик - C# ASP.NET
Здравствуйте. Такой вопрос. Почему при отправке письма через сокет, на почтовом ящике русские буквы отображаются некорректно? Пример...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru