Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Проблема отправки писем через NMSMTP

32K
16 декабря 2007 года
marazmaticus
8 / / 16.12.2007
Помогите пожалуйста разобраться в следующем.
Прога должна отправлять письма.

Что я сделал:
1) Добавил на форму компаненту NMSMTP
2) Написал следующий обработчик
Код:
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();
}


Нажимаю на кнопку.Эффекта нет.

Как надо? Как прописать значение пароля при аутентификации и вообще может я не в ту степь зарулил? Спасибо
1
16 декабря 2007 года
kot_
7.3K / / 20.01.2000
Цитата: marazmaticus
Помогите пожалуйста разобраться в следующем.
Прога должна отправлять письма от имени (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 функции

8.4K
16 декабря 2007 года
Zor
104 / / 23.04.2006
Догадываюсь, что вылетает "Autorization failed"
Пользуйся IdSMTP - там есть указание пароля пользователя.
(вот жук опередил :) )
1.8K
19 декабря 2007 года
Arkady
153 / / 18.12.2007
В Борланде есть вот тут:
Цитата:
Borland\CBuilder6\Examples\FastNet\SMTP


пример, как пользоваться NMSMTP.

Вот тут:
Ссылка на этот же форум

И в ряде других примеров идёт повторение борландовского примера.
Я столкнулся с такой проблемой: с одного моего адреса (на mail.ru) Борландовский пример отправляет письма. С другого моего адреса (тоже на mail.ru!!!) не отправляет, смтп сервер возвращает код 503.

Кроме того, что адреса по-разному называются, я разницы между ними не вижу. И тем не менее факт на лицо =)
Отличаются они тем, что в моем The Bat адрес, с которого отправляется, настроен, а второй адрес не настроен. Не представляю, как оно может влиять, но, видимо, влияет.

А вот тут предлагается другое решение:
Ссылка на этот же форум

Здесь почему-то помогающий программист сначала (считает это как нечно разумеящееся) считает необходимым приконнектиться к NMPOP3.

И действительно, второй "неотправляющий" адрес таким образом отправляет.
Но первый-то отправлял и без этого. В чем дело - не знаю, списываю на магию и собственное невежество))

Надеюсь это поможет, а если вдруг кто-то знает, в чем же дело - буду рад разоблачению черной магии =)

1
19 декабря 2007 года
kot_
7.3K / / 20.01.2000
Цитата: Arkady
В Борланде есть вот тут:

пример, как пользоваться NMSMTP.

Вот тут:
Ссылка на этот же форум

И в ряде других примеров идёт повторение борландовского примера.
Я столкнулся с такой проблемой: с одного моего адреса (на mail.ru) Борландовский пример отправляет письма. С другого моего адреса (тоже на mail.ru!!!) не отправляет, смтп сервер возвращает код 503.

Кроме того, что адреса по-разному называются, я разницы между ними не вижу. И тем не менее факт на лицо =)
Отличаются они тем, что в моем The Bat адрес, с которого отправляется, настроен, а второй адрес не настроен. Не представляю, как оно может влиять, но, видимо, влияет.

А вот тут предлагается другое решение:
Ссылка на этот же форум

Здесь почему-то помогающий программист сначала (считает это как нечно разумеящееся) считает необходимым приконнектиться к NMPOP3.

И действительно, второй "неотправляющий" адрес таким образом отправляет.
Но первый-то отправлял и без этого. В чем дело - не знаю, списываю на магию и собственное невежество))

Надеюсь это поможет, а если вдруг кто-то знает, в чем же дело - буду рад разоблачению черной магии =)



Мой юный друг - вы читаете то что пишут до вас - или просто задаете вопросы? Например,

Цитата:

Могу конечно ошибаться - но помоему данный компонент не работает с серверами которые требуют авторизации. Используйте Indy-компоненты или MAPI функции


из этого что следует? Из этого следует - что если вы на сервер не залогинились предварительно - то отправить письмо вам не удасться. Так как майл.ру авторизацию при отправке требует - то отсюда и вывод.
А использование компонента TNMPOP3 позволяет вам авторизоваться.
Вот вам и все разоблачение. Но я бы повторил свою рекомендацию - в особенности ее вторую часть:

Цитата:

Используйте ... MAPI функции


потому что ИМХО компоненты борланда для работы с сетью очень "деревянные"

1
19 декабря 2007 года
kot_
7.3K / / 20.01.2000
Кстати с праздником святого Николы. :):):)
1.8K
19 декабря 2007 года
Arkady
153 / / 18.12.2007
Спасибо, я это прочел, большая часть того, что я написал - были подсказки где найти инфу для спрашивающего про NMSMTP.

А мой вопрос заключался в том, что один адрес отправлял без авторизации, а второй с авторизацией. И оба адреса на mail.ru. Это меня удивило =) Если кто знает почему - мне очень интересно.
1.8K
19 декабря 2007 года
Arkady
153 / / 18.12.2007
Поясню, получилось, будто бы (если считать, что mail.ru требует авторизации) через NMSMTP можно отправить письмо без авторизации.

Хотя если у мэйл-ру стоит большой таймаут, не факт, что я зебатом не проверял почту (пока компилится) и таким образом не авторизировался...

Возможно тут собака зарыта, приду домой - проверю.
11
19 декабря 2007 года
oxotnik333
2.9K / / 03.08.2007
Цитата: Arkady
Спасибо, я это прочел, большая часть того, что я написал - были подсказки где найти инфу для спрашивающего про NMSMTP.

А мой вопрос заключался в том, что один адрес отправлял без авторизации, а второй с авторизацией. И оба адреса на mail.ru. Это меня удивило =) Если кто знает почему - мне очень интересно.



один адрес (насколько я понял) авторизировался через Бат, а второй пытался напрямую

32K
20 декабря 2007 года
marazmaticus
8 / / 16.12.2007
Большое спасибо. Сейчас письма отправляются. Код следующий (для тех, кто с такой проблемой столкнётся в будущем).
Код:
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();

Теперь другая проблема. Хочу прикрепить файл к письму. В примерах описанных для Delphi это делается так:
 
Код:
Компанента.Attachments.Add(MyFile.Text);

[COLOR="Red"]Как то же самое реализовать в Builder’е?[/COLOR]
11
20 декабря 2007 года
oxotnik333
2.9K / / 03.08.2007
Цитата: marazmaticus
Большое спасибо. Сейчас письма отправляются. Код следующий (для тех, кто с такой проблемой столкнётся в будущем).
Код:
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();

Теперь другая проблема. Хочу прикрепить файл к письму. В примерах описанных для Delphi это делается так:
 
Код:
Компанента.Attachments.Add(MyFile.Text);

[COLOR="Red"]Как то же самое реализовать в Builder’е?[/COLOR]



Компанента->Attachments->Add(FilePatch);

32K
20 декабря 2007 года
marazmaticus
8 / / 16.12.2007
У компаненты IDMessage нет такой возможности (я не нашёл)
32K
22 декабря 2007 года
marazmaticus
8 / / 16.12.2007
Реализация отправки писем с вложенными файлами
Код:
AnsiString sFile;
 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();
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог