![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как бороться с
andrey_pst © (2002-10-07 10:01:00)Программа отправляет по заданным e-mail письма,
после отправки 6-го письма выскакивает ошибка
"10057 Socket is not connected"
Подскажите, где я накосячил ?
(Delphi5, Win98).
Вот кусок кода:
for i := 1 to CountRoamers do
begin
...
with NMSMTP1 do
begin
Host := tHost;
TimeOut := 20000;
UserID := tUserID;
PostMessage.ToAddress.Text := EMailClient;
PostMessage.FromAddress := "andrey_pst@rambler.ru";
PostMessage.FromName := "andrey_pst@rambler.ru";
PostMessage.ReplyTo := "andrey_pst@rambler.ru";
PostMessage.LocalProgram := "Microsoft Outlook";
PostMessage.Subject := "The documents on internal roaming.";
PostMessage.Body.Text := "The documents on internal roaming.";
Connect;
SendMail;
Disconnect;
end;
...
end;
Ryser (2002-10-07 14:43:00) [1]Была похожая проблема. После "отправки" очередного сообщения, причем в начале работы цикла, все вываливалось на эту ошибку.
На самом деле письмо фактически еще не ушло, а цикл едет дальше.
Можно попробовать поставить флаг на событие NMSMTP1Success Start:=True;
и проверять его в цикле отправки. Если ушло - идем дальше...
andrey_pst (2002-10-07 13:55:00) [2]>>sask
>>Host же у тебя один и тот же => коннектишся к нему один раз ...
помогло, спасибо
sask (2002-10-07 13:16:00) [3]А по поводу альтернативных вариантов - Indy
(но это наверное уже дело вкуса). У Indy хоть исходники открытые.
andrey_pst (2002-10-07 13:10:00) [4]пардон - я перегрелся :)
sask (2002-10-07 13:07:00) [5]>> andrey_pst
>>а как, допустим N клиентам письма отправить ? Цикл для этого и >>делался, плюс вложения в письмах разные... Так что всем за 1 >>раз отправить нельзя.
Host же у тебя один и тот же => коннектишся к нему один раз и отправляешь сколько угодно писем - потом делаешь disconnect...
Vitaly (2002-10-07 13:02:00) [6]>andrey_pst © (07.10.02 12:43)
Да, что-то я не из той оперы забабахал!
P.S.
А, ведь видел NMSMTP.
В общем, хотел типа sask"a предложить.
andrey_pst (2002-10-07 13:01:00) [7]>> sask
>> лучше забыть про вкладку FastNet
Можете предложить альтернативные варианты ?
andrey_pst (2002-10-07 13:00:00) [8]>>sask
>>вынести за пределы цикла
а как, допустим N клиентам письма отправить ? Цикл для этого и делался, плюс вложения в письмах разные... Так что всем за 1 раз отправить нельзя.
sask (2002-10-07 12:57:00) [9]А вообще, лучше забыть про вкладку FastNet :)
sask (2002-10-07 12:55:00) [10]Попробуй Connect и Disconnect вынести за пределы цикла - может поможет...
andrey_pst (2002-10-07 12:43:00) [11]>> Vitaly
дико не хочется привязывать программу к определенной почтовой системе.
а если стоит TheBat, например ?
Vitaly (2002-10-07 12:36:00) [12]outA: TOutlookApplication;
MI: TMailItem;
outA.Connect;
dir := ini.ReadString("dir", "out", "");
fr := FindFirst(dir+"\*.*", faAnyFile and (not faDirectory), f);
if fr = 0 then begin
history("Создаем письмо...");
mi.ConnectTo(outA.CreateItem(olMailItem) as _DMailItem);
mi.Recipients.Add(ini.ReadString("mail", "to", ""));
while fr = 0 do begin
history("отправляем файл " + dir + f.Name);
mi.Attachments.Add( dir + f.Name,
emptyParam, emptyParam, emptyParam);
if not DeleteFile( dir + f.Name )
then history("ФАЙЛ " + dir + f.Name + " - ОШИБКА УДАЛЕНИЯ!");
fr := FindNext(f);
end;
FindClose(f);
mi.Send;
history("Ok.");
end;
(outA.ActiveExplorer.CommandBars as CommandBars)["Standard"].
Controls["Отправить/полу&чить"].Execute;
outA.Disconnect;
andrey_pst (2002-10-07 11:55:00) [13]Подтолкните хоть в нужном направлении