Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.04.19;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.041 c
15-1234535049
Саша
2009-02-13 17:24
2009.04.19
Кто знает, как заблокироватть доступ к сайту.


3-1219219719
Max Zyuzin
2008-08-20 12:08
2009.04.19
ADO. переподключение после обрыва соединения


2-1236094118
mmelik
2009-03-03 18:28
2009.04.19
Ошибка Stack overflow


2-1235724440
D@nger
2009-02-27 11:47
2009.04.19
Почему отсекается первый символ?


4-1208521138
eror
2008-04-18 16:18
2009.04.19
Требуется нажать в неактивном окне кнопку





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский