Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.04.19;
Скачать: CL | DM;

Вниз

Indy письмо   Найти похожие ветки 

 
9899100   (2009-03-03 18:35) [0]

Здравствуйте!!
подскажите где может быть ошибка
я написал процедуру для отправки письма используя компоненты Indy
все нормально отправляет
но если я второй раз вызываю эту процедуру
то письмо не отправляется
коннект с СМТП происходит а письмо Send выдет исключение :(

в процедуре я просто заполняю необходимве поля IdMessage расположенного на форме
и отправляю через smtp также на расположенного на форме
перед оптправкой я ессесно соеденяюсь с smtp
после отправки вызываю disconnect

т.е. вроде бы все как бы правильно
но вот, как ясказал выше, ежели процедуру вызвать еще раз то send не отправляет
причем ничего существенно не меняется ни адрес получателя ни адрес сервера ни тема письма ни отправитель кроме вложенного в письмо файла
пробовал второй раз отправить тотже файл что и в первый раз, т.е. письма получились одинаковые
опять.... первый ушел на втором ошибка
и


 
Anatoly Podgoretsky ©   (2009-03-03 21:08) [1]

> 9899100  (03.03.2009 18:35:00)  [0]

А чего тут гадать, у тебя ошибка в программе.


 
mmelik ©   (2009-03-04 01:15) [2]

Попробуй так (самое важное - всегда выполнять MsgSend.Clear;
 MsgSend.MessageParts.Clear;):

procedure TfmMain.DisconnectFromSMTP;
{Отключение от сервера исходящей почты}
begin
 AntiFreezeSend.Active:= false;

 if SMTP.Connected then
 try
   SMTP.Disconnect;
 except
   AddToErrorsLog(PChar(Exception(ExceptObject).Message),true);
   AddToErrorsLog(DateTimeToStr(Now)+", procedure DisconnectFromSMTP"+#13#10+
     "Ошибка при попытке разрыва соединения с сервером исходящей почты", false);
 end;

 try
   SMTP.DisconnectSocket;
 except end;

 MsgSend.Clear;
 MsgSend.MessageParts.Clear;
end;

function TfmMain.ConnectToSMTP: boolean;
{Подключение к серверу исходящей почты}
begin
 Result:= false;

 AntiFreezeSend.Active:= true;

 SMTP.Host:= Const_RTDS_sSMTP_Server;
 SMTP.Port:= Const_RTDS_iSMTP_Port;

 SMTP.Username:= copy(Const_RTDS_sEMail,1,pos("@",Const_RTDS_sEMail)-1);
 SMTP.Password:= Const_RTDS_sPassword;

 case Const_RTDS_iSMTP_Authentication of
   0: SMTP.AuthenticationType := atNone;  {Авторизация не нужна}
   1: SMTP.AuthenticationType := atLogin; {Авторизация нужна}
 end;

 if not SMTP.Connected then
 try
   SMTP.Connect;
 except
   DisconnectFromSMTP;
   AddToErrorsLog(PChar(Exception(ExceptObject).Message),true);
   AddToErrorsLog(DateTimeToStr(Now)+", function ConnectToSMTP"+#13#10+
     "Ошибка при попытке создания соединения с сервером исходящей почты", false);
   exit;
 end;

 MsgSend.Clear;
 MsgSend.MessageParts.Clear;

 Result:= true;
end;

procedure TfmMain.SendSMTPMsg(ABBR: string);
{Отправка запроса об отсутствующей инф-ции объекту ABBR
(на мыло объекта отправляется заранее подготовленный файл ...\MyRTDA\rtds.rar)}
var
 sRTDS_MAIL: string;
begin
 if ABBR="" then exit;
 if pos("@",Const_RTDS_sEMail)=0 then exit;

 if dt.sqlObjCashes.Active then
   sRTDS_MAIL:= VarToStr(dt.sqlObjCashes.Lookup("ABBR",ABBR,"RTDS_MAIL"));

 if (sRTDS_MAIL="") or (pos("@",sRTDS_MAIL)=0) then exit;

 if not FileExists(ExtractFilePath(Application.ExeName)+"rtds.rar") then exit;

 {Подключаемся к серверу исходящей почты}
 if not ConnectToSMTP then exit;

 with MsgSend do
 begin
   From.Name:= copy(Const_RTDS_sEMail,1,pos("@",Const_RTDS_sEMail)-1); {От кого}
   From.Address:= Const_RTDS_sEMail; {Адрес электронной почты}
   Recipients.EMailAddresses:= sRTDS_MAIL; {Мыло получателя}
   Subject := "rtds"; {Тема}
   Date:= Now;
 end;

 {Аттачмент}
 TIdAttachment.Create(MsgSend.MessageParts,ExtractFilePath(Application.ExeName)+"rtds.rar"); {Вложение}

 try
   SMTP.Send(MsgSend);
 except
   AddToErrorsLog(PChar(Exception(ExceptObject).Message),true);
   AddToErrorsLog(DateTimeToStr(Now)+", procedure SendSMTPMsg("+ABBR+")"+#13#10+
         "Ошибка отправки письма-запроса объекту "+ABBR+#13#10+
         "на его e-mail адрес "+sRTDS_MAIL, false);
 end;

 {Отключаемся от сервера исходящей почты}
 DisconnectFromSMTP;
end;



Страницы: 1 вся ветка

Текущий архив: 2009.04.19;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.032 c
4-1208613157
Damien
2008-04-19 17:52
2009.04.19
Рисунок за границами окна


2-1236089287
Sergio
2009-03-03 17:08
2009.04.19
BDE+paradox


15-1234964100
@!!ex
2009-02-18 16:35
2009.04.19
ICQ опять уронили?


1-1210569343
User1
2008-05-12 09:15
2009.04.19
Не соображу, что за ошибка...


2-1235963625
karaya
2009-03-02 06:13
2009.04.19
сортировка массива в делфи