Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Обработка ошибок при отправлении E-Mail [D7, XP]


Juri ©   (2006-09-10 18:31:00) 

Доброго времени суток! Вот имею такой код для отправки почты:

procedure TForm1.Button2Click(Sender: TObject);
var idtTextPart: TIdText;
begin
Button2.Enabled:=False;
Memo3.Lines.Add(DateToStr(DATE)+' '+TimeToStr(TIME)+'->Подключение...');
IdSMTP1.Host := Edit2.Text;
IdSMTP1.Username := Edit6.Text;
IdSMTP1.Password := Edit7.Text;
IdMessage1.Clear;
IdMessage1.ContentType := 'Multipart/Alternative';
idtTextPart := TIdText.Create(IdMessage1.MessageParts, nil);
idtTextPart.ContentType := 'text/plain';
idtTextPart:= TIdText.Create(IdMessage1.MessageParts, nil);
idtTextPart.ContentType := 'text/html';
idtTextPart.Body.Text:=Memo1.Text;
IdMessage1.CharSet := 'windows-1251';
IdMessage1.Subject := Edit5.Text;
IdMessage1.From.Address := Edit9.Text;
IdMessage1.From.Name := Edit3.Text;
with IdMessage1.Recipients.Add do begin
 Address := Edit4.Text;
end;
Memo3.Lines.Add(DateToStr(DATE)+' '+TimeToStr(TIME)+'->Соединение с почтовым сервером...');
IdSMTP1.Connect;
if IdSMTP1.Connected then begin
 Memo3.Lines.Add(DateToStr(DATE)+' '+TimeToStr(TIME)+'->Соединение завершено, отправка сообщения...');
 IdSMTP1.Send(idMessage1);
 Memo3.Lines.Add(DateToStr(DATE)+' '+TimeToStr(TIME)+'->Сообщение от '+Edit9.Text+' для '+Edit4.Text+' успешно отправлено!');
 k:=k+1;
 IdSMTP1.Disconnect;
end;
Button2.Enabled:=True;
Label10.Caption:='Отправлено: '+IntToStr(k)+' сообщений';
end;

всё отлично работает, НО нет обработки ошибок: "лимит отправки сообщений", "отправка на несуществующий адресс", и наверняка ещё много каких которые мне ещё не выскакивали... как обработать эти ошибки?


Германн   (2006-09-11 01:19:00) [1]

И кстати, насчёт хелпа. Зря что-ли АП старался! По Indy читай его перевод книги по Инди. Найдёшь тут: http://www.podgoretsky.com/ddp.html


Германн   (2006-09-11 01:07:00) [2]


> пробую сам разобраться... вот выдаёт ошибку что не объявлено
>
> > EIdProtocolReplyError
>
> где и как объявить в хелпе ненашёл этого...
>

uses IDException
На хелп надейся, а сам не плошай! Поиск файлов с нужным текстом никто ещё не отменял. И каталог Source во всех Дельфях есть.


Juri   (2006-09-11 00:43:00) [3]

пробую сам разобраться... вот выдаёт ошибку что не объявлено

> EIdProtocolReplyError

где и как объявить в хелпе ненашёл этого...


Juri   (2006-09-11 00:15:00) [4]

Извените конешно но я новичёк в этом и непойму как с подобным кодом работать что то никак
try
...
Send
...
except
on e:EIdProtocolReplyError do
begin
  case e.ReplyErrorCode do
    // анализ ошибки протокола  
  end;
end
on e:Exception do
begin
  ShowMessage(e.Message)
end
end


Dmitrij_K   (2006-09-10 23:52:00) [5]


> сделай пример возьми мой код вставь в него обработку

Может быть тебе дать ключ от квартиры, где деньги лежат? (c) 12 стульев


Anatoly Podgoretsky   (2006-09-10 22:34:00) [6]

А может это ты сделаешь?


Juri   (2006-09-10 21:19:00) [7]

вобщем чтоб я 100% всё понялсделай пример возьми мой код вставь в него обработку... как это должно быть.


Dmitrij_K   (2006-09-10 19:29:00) [8]


> тут можно попобробней?

Что именно не понятно?


Juri   (2006-09-10 19:17:00) [9]


> case e.ReplyErrorCode do
>      // анализ ошибки протокола  
>    end;

тут можно попобробней?


Dmitrij_K   (2006-09-10 19:02:00) [10]

Примерно так
try
...
Send
...
except
 on e:EIdProtocolReplyError do
 begin
   case e.ReplyErrorCode do
     // анализ ошибки протокола  
   end;
 end
 on e:Exception do
 begin
   ShowMessage(e.Message)
 end
end


Наверх

Титульная страница Поиск, карта сайта Написать письмо