Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/10: Рейтинг темы: голосов - 10, средняя оценка - 4.80
iiwanc
1 / 1 / 1
Регистрация: 04.03.2013
Сообщений: 90
#1

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

17.06.2013, 20:48. Просмотров 1839. Ответов 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
Ответы с готовыми решениями:

Отправка письма через почтовый клиент
Доброе утро, товарищи. Назрел тут один вопрос. Требуется отправить письмо...

Проблема с кодировкой при отправке письма
Здравствуйте. Пишу курсовую на тему "Почтовый клиент" на С++ Builder...

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

Ошибка при отправке POST запроса
Ситуация в следующем программа которую сделал отправляет пост запрос на https...

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

8
AntonChik
1085 / 583 / 121
Регистрация: 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 / 1
Регистрация: 04.03.2013
Сообщений: 90
18.06.2013, 18:19  [ТС] #3
Цитата Сообщение от AntonChik Посмотреть сообщение
ну дак все правильно, вот и отправляй сам себе, а мыло юзера в тело пихай.
а так ты пытаешься отправлять от имени юзера, а его пароль не вводишь(потому как не знаешь).
либо используй другой smtp сервер, который позволяет отправлять анонимно.

а может ты просто попутал смысл строк 12 и 13
в тело адрес юзера пихать это как?
0
AntonChik
1085 / 583 / 121
Регистрация: 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 / 1
Регистрация: 04.03.2013
Сообщений: 90
19.06.2013, 09:25  [ТС] #5
большое спасибо, все работает
теперь хотелось бы с кодировкой письма разобраться. приходят вместо кириллицы вопросительные знаки
0
AntonChik
1085 / 583 / 121
Регистрация: 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 / 1
Регистрация: 04.03.2013
Сообщений: 90
21.06.2013, 16:32  [ТС] #7
само письмо правильно приходит, а тема по прежнему вопросительные знаки
0
AntonChik
1085 / 583 / 121
Регистрация: 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 / 1
Регистрация: 04.03.2013
Сообщений: 90
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

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

Почтовый клиент. Получение писем через POP3
Собственно ниже приведен код программы, но письма не приходят, подскажите что...

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


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

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

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