Нужна помощь (отправка писем)

HaosMan

Нужна ваша помощь.Уже облазил кучу сайтов, но не получается решить проблему. Не могу написать приложение для отправки писем с mail или rambler, до получения почты даже руки еще не дошли.Использую Indy 9 (Delphi7). Пробую через компонент TidSMTP:
procedure TForm1.Button1Click(Sender: TObject);begin idSMTP1.Username := 'Ник'; idSMTP1.Password := 'Пароль';IdSMTP1.Host :='pop3.rambler.ru'; idSMTP1.Port := 25';IdSMTP1.Connect;trywith IdMessage1 do begin CharSet := 'Windows-1251'; ContentType := 'text/html'; ContentTransferEncoding := '********'; Subject := 'Тема письма'; From.Name := 'Имя отправителя'; From.Address := 'Адрес отправителя'; Body.Clear; Body.Text := 'sdfsdfds'; Recipients.Clear; with Recipients.Add do begin Address := 'Мыло куда отправляю'; Name := 'Имя кому отправляю'; end; end;exceptShowMessage ('Error');end;tryIdSMTP1.Send(IdMessage1);exceptShowMessage ('Error');end;IdSMTP1.Disconnect;end;
В результате:
12 ответов

HaosMan

Может кто-нибудь помочь готовым кодом для отправки через почтовых гигантов?


HaosMan

Может кто-нибудь помочь готовым кодом для отправки через почтовых гигантов?
// http://www.sql.ru/forum/actualthread.aspx?tid=338562


HaosMan

Пробовал я этот код не отправляет он на rambler письма


HaosMan

Пробовал я этот код не отправляет он на rambler письма
Нафиг тебе ремблер, перейди на mail.ru


HaosMan

Ты хочешь сказать, что через mail письма будут отправляться?


HaosMan

Ты хочешь сказать, что через mail письма будут отправляться?
Да, у меня код работает уже больше года. Только сообщение об успешной отправке надо заремить, иначе пользователь твоего софта просто охренеет :-)


HaosMan

Вот полный рабочий код
<b>var</b>
 LSMTP: TIdSMTP;
 LMsg: TIdMessage;
<b>begin</b>

 LSMTP := TIdSMTP.Create(<b>nil</b>);
 LMsg := TIdMessage.Create(LSMTP);

 <b>try</b>
 <b>with</b> LMsg <b>do</b> <b>begin</b>
 Date := Now;
 Subject := 'Упс!';
 Recipients.EMailAddresses := '[removed_email]';

 Organization := Trim(CustName);
 ContentType:= 'text/html';
 CharSet:= 'Windows-1251';

 Priority := mpHighest;
 Sender.Text := 'Упс!';

 Body.Add('Дорогие Упс! ');
 <b>end</b>;

 TIdAttachment.Create(LMsg.MessageParts , 'c:\temp\test.xls');

 <b>with</b> LSMTP <b>do</b> <b>begin</b>
 AuthenticationType := atLogin;
 Host := 'smtp.yandex.ru';
 Username := 'xxx';
 Password:= 'xxx';
 Connect;
 <b>try</b>
 Send(LMsg);
 <b>finally</b>
 <i>// ShowMessage('Отправлено успешно');</i>
 Disconnect;
 <b>end</b>;
 <b>end</b>;
 <b>except</b>
 <i>// ShowMessage('Возникла ошибка при отправки почтового сообщения!');</i>
 <b>end</b>;

 FreeAndNil(LMsg);
 FreeAndNil(LSMTP);


HaosMan

ВСЕМ СПАСИБО!!!!Короче я немного стормозил, надо было задавать адрес отправителя равным адресу на который я коннекчусь, а также выставить тип аутентификации atLogin. Бывают в жизни сложные моменты:):) Но я очень рад, еще раз всем спасибо!


HaosMan

Проблема не в этом в при отправке письма обязательно нужно указать адрес отправителя и адрес получателяvarLMsg: TIdMessage;LMsg := TIdMessage.Create(IdSMTP1);with LMsg dobeginFrom.Address := '[removed_email]';Recipients.Add.Address := '[removed_email]';Subject := 'Test Subject';Body.Text := FSubject;end;end;если не указать From.Address := '[removed_email]'; будет вываливаться ошибка из EIdprotocolReplyError 5.3.0 ...,Это типа защита от спама.К тому же при успешной идентификации пользователя, хотя можно и не идентифицировать пользователя. На внутриние адреса smtp сервера письмо должно уходить и без указания адреса отправителя, хотя возможно не факт.


HaosMan

Уже облазил кучу сайтов
здес пробывал поискать?тынцbid=20&tid=187096&hl=andrey#1572303----www.hramin.jino-net.ru


HaosMan

Интересно смысл последних двух ответов??? Запоздалая реакция или желания похвастаться умом?Я же сказал, что проблема уже решена)))