Главная страница
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.016 c
2-1236075271
markers
2009-03-03 13:14
2009.04.19
Клик по иконке чужого приложения в трее


15-1234990250
Кое кто
2009-02-18 23:50
2009.04.19
have been + третья форма глагола...


2-1236238837
EWGhack
2009-03-05 10:40
2009.04.19
Хочу написать прогу но незнаю с чего начать


2-1235708177
sco
2009-02-27 07:16
2009.04.19
TImage и прорисовка (не про DoubleBuffered)


1-1210091049
Nucer
2008-05-06 20:24
2009.04.19
TThread и OnTerminate