Проблема отправки писем через NMSMTP
Прога должна отправлять письма.
Что я сделал:
1) Добавил на форму компаненту NMSMTP
2) Написал следующий обработчик
{
NMSMTP1->Host="pop3.bk.ru";
NMSMTP1->Port= 25;
NMSMTP1->Charset= "koi8-r";
NMSMTP1->PostMessageA->FromAddress= "a@bk.ru";
NMSMTP1->PostMessageA->ToAddress->Text= "b@bk.ru";
NMSMTP1->UserID= "a@bk.ru";
NMSMTP1->PostMessageA->Body->Text= "";
NMSMTP1->FinalHeader->Clear();
NMSMTP1->Connect();
NMSMTP1->SendMail();
NMSMTP1->Disconnect();
}
Нажимаю на кнопку.Эффекта нет.
Как надо? Как прописать значение пароля при аутентификации и вообще может я не в ту степь зарулил? Спасибо
Прога должна отправлять письма от имени (a@bk.ru)
- Добавил на форму компаненту NMSMTP1
- Далее пишу следующее:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
NMSMTP1->Host="pop3.bk.ru";
NMSMTP1->Port= 25;
NMSMTP1->Charset= "koi8-r";
NMSMTP1->PostMessageA->FromAddress= "a@bk.ru";
NMSMTP1->PostMessageA->ToAddress->Text= "b@bk.ru";
NMSMTP1->UserID= "a@bk.ru";
NMSMTP1->PostMessageA->Body->Text= "";
NMSMTP1->FinalHeader->Clear();
NMSMTP1->Connect();
NMSMTP1->SendMail();
NMSMTP1->Disconnect();
}
Не работает.
Вопрос - как надо? Как прописать значение пароля при аутентификации и вообще может я не в ту степь зарулил? Спасибо
Могу конечно ошибаться - но помоему данный компонент не работает с серверами которые требуют авторизации. Используйте Indy-компоненты или MAPI функции
Пользуйся IdSMTP - там есть указание пароля пользователя.
(вот жук опередил :) )
пример, как пользоваться NMSMTP.
Вот тут:
Ссылка на этот же форум
И в ряде других примеров идёт повторение борландовского примера.
Я столкнулся с такой проблемой: с одного моего адреса (на mail.ru) Борландовский пример отправляет письма. С другого моего адреса (тоже на mail.ru!!!) не отправляет, смтп сервер возвращает код 503.
Кроме того, что адреса по-разному называются, я разницы между ними не вижу. И тем не менее факт на лицо =)
Отличаются они тем, что в моем The Bat адрес, с которого отправляется, настроен, а второй адрес не настроен. Не представляю, как оно может влиять, но, видимо, влияет.
А вот тут предлагается другое решение:
Ссылка на этот же форум
Здесь почему-то помогающий программист сначала (считает это как нечно разумеящееся) считает необходимым приконнектиться к NMPOP3.
И действительно, второй "неотправляющий" адрес таким образом отправляет.
Но первый-то отправлял и без этого. В чем дело - не знаю, списываю на магию и собственное невежество))
Надеюсь это поможет, а если вдруг кто-то знает, в чем же дело - буду рад разоблачению черной магии =)
пример, как пользоваться NMSMTP.
Вот тут:
Ссылка на этот же форум
И в ряде других примеров идёт повторение борландовского примера.
Я столкнулся с такой проблемой: с одного моего адреса (на mail.ru) Борландовский пример отправляет письма. С другого моего адреса (тоже на mail.ru!!!) не отправляет, смтп сервер возвращает код 503.
Кроме того, что адреса по-разному называются, я разницы между ними не вижу. И тем не менее факт на лицо =)
Отличаются они тем, что в моем The Bat адрес, с которого отправляется, настроен, а второй адрес не настроен. Не представляю, как оно может влиять, но, видимо, влияет.
А вот тут предлагается другое решение:
Ссылка на этот же форум
Здесь почему-то помогающий программист сначала (считает это как нечно разумеящееся) считает необходимым приконнектиться к NMPOP3.
И действительно, второй "неотправляющий" адрес таким образом отправляет.
Но первый-то отправлял и без этого. В чем дело - не знаю, списываю на магию и собственное невежество))
Надеюсь это поможет, а если вдруг кто-то знает, в чем же дело - буду рад разоблачению черной магии =)
Мой юный друг - вы читаете то что пишут до вас - или просто задаете вопросы? Например,
Могу конечно ошибаться - но помоему данный компонент не работает с серверами которые требуют авторизации. Используйте Indy-компоненты или MAPI функции
из этого что следует? Из этого следует - что если вы на сервер не залогинились предварительно - то отправить письмо вам не удасться. Так как майл.ру авторизацию при отправке требует - то отсюда и вывод.
А использование компонента TNMPOP3 позволяет вам авторизоваться.
Вот вам и все разоблачение. Но я бы повторил свою рекомендацию - в особенности ее вторую часть:
Используйте ... MAPI функции
потому что ИМХО компоненты борланда для работы с сетью очень "деревянные"
А мой вопрос заключался в том, что один адрес отправлял без авторизации, а второй с авторизацией. И оба адреса на mail.ru. Это меня удивило =) Если кто знает почему - мне очень интересно.
Хотя если у мэйл-ру стоит большой таймаут, не факт, что я зебатом не проверял почту (пока компилится) и таким образом не авторизировался...
Возможно тут собака зарыта, приду домой - проверю.
А мой вопрос заключался в том, что один адрес отправлял без авторизации, а второй с авторизацией. И оба адреса на mail.ru. Это меня удивило =) Если кто знает почему - мне очень интересно.
один адрес (насколько я понял) авторизировался через Бат, а второй пытался напрямую
IdMessage1->From->Text= "адрес отправителя";
IdMessage1->Recipients->EMailAddresses= "адрес получателя";
IdMessage1->Subject="Тема письма";
IdSMTP1->UserId="адрес отправителя";
IdSMTP1->Password="пароль ящика отправителя";
IdSMTP1->Host="smtp.bk.ru"; //Может быть другой
IdSMTP1->Port= 25;
IdSMTP1->Connect();
IdSMTP1->Send(IdMessage1);
IdSMTP1->Disconnect();
Теперь другая проблема. Хочу прикрепить файл к письму. В примерах описанных для Delphi это делается так:
[COLOR="Red"]Как то же самое реализовать в Builder’е?[/COLOR]
IdMessage1->From->Text= "адрес отправителя";
IdMessage1->Recipients->EMailAddresses= "адрес получателя";
IdMessage1->Subject="Тема письма";
IdSMTP1->UserId="адрес отправителя";
IdSMTP1->Password="пароль ящика отправителя";
IdSMTP1->Host="smtp.bk.ru"; //Может быть другой
IdSMTP1->Port= 25;
IdSMTP1->Connect();
IdSMTP1->Send(IdMessage1);
IdSMTP1->Disconnect();
Теперь другая проблема. Хочу прикрепить файл к письму. В примерах описанных для Delphi это делается так:
[COLOR="Red"]Как то же самое реализовать в Builder’е?[/COLOR]
Компанента->Attachments->Add(FilePatch);
TIdAttachment *pAttachment;
sFile = "c:\\a.txt";
pAttachment = new TIdAttachment(IdMessage1->MessageParts,sFile);
IdMessage1->ContentType = "multipart/mixed";
IdMessage1->MessageParts->Add();
IdMessage1->MessageParts->Items[0] = pAttachment;
IdMessage1->Body->Text= "Письмо от рассылателя писем";
IdMessage1->From->Text= "";
IdMessage1->Recipients->EMailAddresses= "";
IdMessage1->Subject="Прайс лист от ";
IdSMTP1->UserId="";
IdSMTP1->Password="";
IdSMTP1->Host="smtp.bk.ru";
IdSMTP1->Port= 25;
IdSMTP1->Connect();
IdSMTP1->Send(IdMessage1);
IdSMTP1->Disconnect();