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

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

Как бороться с


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]

Подтолкните хоть в нужном направлении


Наверх

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