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

Вниз

Microsoft Outlook не закрывается   Найти похожие ветки 

 
Juice ©   (2005-06-09 18:20) [0]

Для отправки почтового сообщения через Microsoft Outlook использую следующий код. Сообщение отправляется нормально, но после отправки outlook.exe продолжает висеть в процессах и при попытке отправить следующее письмо программа есс-но зависает.
В чем тут ошибка, я вроде как все правильно делаю ?

try
             OutlookApp := GetActiveOleObject("Outlook.Application");
             OutlookApp.AutoQuit := true;
           except
             try
               OutlookApp := CreateOleObject("Outlook.Application");
             except
               Application.MessageBox("Äëÿ íàëåæíî¿ ðîáîòè ìîäóëÿ ïîòð³áåí Microsoft Outlook! Âñòàíîâ³òü öþ ïðîãðàììó òà ñïðîáóéòå ùå ðàç. ", "Âèíèêëà ïîìèëêà", MB_YESNO);
               ExitProcess(0);
             end;
           end;
           try
             MailItem := OutlookApp.CreateItem(olMailItem);

             case Self.TraderID of
             5   : s := Self.Mail.toAdress_SAT;
             985 : s := Self.Mail.toAdress_LTD;
             else  s := Self.Mail.toAdress_OTH;
             end;

             while Pos(",", s)<>0 do
             begin
               MailItem.Recipients.Add(Copy(s, 1, Pos(",", s)-1 ));
               Delete(s, 1, Pos(",", s) );
               s:=Trim(s);
             end;
             MailItem.Recipients.Add(s);
             MailItem.Subject := "zvit " + qCustomer.FieldByName("SName").AsString +" "+ DateToStr(self.RprtDate);
             MailItem.Body    := "&#194;&#179;&#228;&#239;&#238;&#226;&#179;&#228;&#237;&#238; &#228;&#238; “&#207;&#238;&#235;&#238;&#230;&#229;&#237;&#237;&#255; &#239;&#240;&#238; &#239;&#238;&#240;&#255;&#228;&#238;&#234; &#241;&#234;&#235;&#224;&#228;&#224;&#237;&#237;&#255; &#224;&#228;&#236;&#179;&#237;&#179;&#241;&#242;&#240;&#224;&#242;&#232;&#226;&#237;&#232;&#245; &#228;&#224;&#237;&#232;&#245; &#249;&#238;&#228;&#238; &#228;&#179;&#255;&#235;&#252;&#237;&#238;&#241;&#242;&#179; &#242;&#238;&#240;&#227;&#238;&#226;&#246;&#179;&#226; &#246;&#179;&#237;&#237;&#232;&#236;&#232; &#239;&#224;&#239;&#229;&#240;&#224;&#236;&#232;"+" &#242;&#224; &#239;&#238;&#228;&#224;&#237;&#237;&#255; &#226;&#179;&#228;&#239;&#238;&#226;&#179;&#228;&#237;&#232;&#245; &#228;&#238;&#234;&#243;&#236;&#229;&#237;&#242;&#179;&#226; &#228;&#238; &#196;&#202;&#214;&#207;&#212;&#208;”, &#231;&#224;&#242;&#226;&#229;&#240;&#228;&#230;&#229;&#237;&#238;&#227;&#238; &#240;&#179;&#248;&#229;&#237;&#237;&#255;&#236; &#196;&#202;&#214;&#207;&#212;&#208; &#185;279 &#226;&#179;&#228; 08.06.04&#240;. &#242;&#224; &#205;&#224;&#234;&#224;&#231;&#243; &#196;&#202;&#214;&#207;&#212;&#208; &#185;923 &#226;&#179;&#228; 27.09.04&#240;., &#237;&#224;&#228;&#224;&#186;&#236;&#238; &#237;&#229;&#240;&#229;&#227;&#243;&#235;&#255;&#240;&#237;&#243; &#179;&#237;&#244;&#238;&#240;&#236;&#224;&#246;&#179;&#254; &#231; &#226;&#232;&#234;&#238;&#237;&#224;&#237;&#237;&#255; &#228;&#238;&#227;&#238;&#226;&#238;&#240;&#179;&#226; &#210;&#238;&#226;&#224;&#240;&#232;&#241;&#242;&#226;&#238;&#236; &#231; &#238;&#225;&#236;&#229;&#230;&#229;&#237;&#238;&#254; &#226;&#179;&#228;&#239;&#238;&#226;&#179;&#228;&#224;&#235;&#252;&#237;&#179;&#241;&#242;&#254; "+
               qCustomer.FieldByName("SName").AsString + " (&#235;&#179;&#246;&#229;&#231;&#179;&#255; " +
                qCustomer.FieldByName("LicenseNumber").AsString + " &#226;&#179;&#228; " +
                 Date2text(qCustomer.FieldByName("LicenseDate").AsDateTime) + ") &#231;&#224; "+
                  Date2text(self.RprtDate);
             myAttachments    := MailItem.Attachments;
             myAttachments.Add(Files.mFileName, olByValue, 1, "marc.dbf");
             myAttachments.Add(Files.oFileName, olByValue, 1, "operate.dbf");
             MailItem.Send;
           finally
             myAttachments := VarNull;
             OutlookApp.Quit;
             OutlookApp := VarNull;
           end;


 
Juice ©   (2005-06-10 11:09) [1]

В поисках решения даже переточил этот код под компоненты со страницы Servers - ситуация аналогичная, и не  только на моей машине! Что же это получается? Может его как-то по-особенному надо закрывать, в отличие от других серверов офиса ? Если кто-то сталкивался с таким  траблом или раоборот, писал диспетчера для аутлука и проблемы не возникало - сообщите плз!


 
Digitman ©   (2005-06-10 12:37) [2]


> при попытке отправить следующее письмо программа есс-но
> зависает


почему это "есс-но" ?

при выполнении какой строчке в твоем коде происходит это "есс-но" ?


> outlook.exe продолжает висеть в процессах


а почему бы ему не "висеть" ?

к примеру, юзер открыл Аутлук "ручками", создал там документ, начал его редактировать, "недоредактировал", бросил все и пошел пить кофе ... в это время как черт из табакерки являешься ты со своей программой, "цепляешься" (GetActiveOleObject) к заведомо существующему процессу олей-сервера (стартованному юзером "ручками" как обычное приложение и смиренно ожидающему возврата юзера после кофиепития), делаешь свои "черные дела") и с какого-то перепугу ожидаешь, что процесс по твоей команде будет немедленно завершен ..

как ты себе это мыслишь ?
почему юзер, таки явившись после кофиепития, должен быть неприятно огорчен внезапным исчезновением им стартованного процесса ?


 
nightsoft ©   (2005-06-10 13:10) [3]

и вообще, замет outlook пользовать ? а вдруг он не установлен на машине ?
есть другие пути отправки почты :) исходники послать ?


 
Juice ©   (2005-06-10 19:11) [4]


> nightsoft ©   (10.06.05 13:10) [3]
> и вообще, замет outlook пользовать ? а вдруг он не установлен
> на машине ?
> есть другие пути отправки почты :) исходники послать ?

http://delphimaster.net/view/6-1117549229/
П.2 в особенно


> Digitman

Ну это конечно все очень правильно, но пока что юзером являюсь я, и кофе я вообще не пью. Если сервер автоматизации не используется то он должен уходить в даун а не висеть в памяти. Обьясню иначе -
1) аутлук не вивсит в памяти
2) выполняется этот код
3) аутлук висит в памяти


 
Juice ©   (2005-06-10 22:59) [5]

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


 
nikkie ©   (2005-06-10 23:23) [6]

ты случайно этот код не в консольном приложении пишешь? OleInitialize/OleUninitialize сам вызываешь?


 
Juice ©   (2005-06-10 23:46) [7]

Пишу в gui, приложение однопоточное. OleInitialize/OleUninitialize не вызываю. А зачем ?


 
nikkie ©   (2005-06-11 01:03) [8]

если бы вызывал - могла бы быть ошибка с подсчетом ссылок из-за неправильного порядка вызова (OleUninitialize раньше, чем освобождение интерфейса).

могу посоветовать присвоить Null и MailItem. если не поможет - начать последовательно комментировать строки и определить минимальный код, который приводит к зависанию аутлука.


 
Anatoly Podgoretsky ©   (2005-06-11 08:53) [9]

Juice ©   (10.06.05 19:11) [4]
но пока что юзером являюсь я, и кофе я вообще не пью.
Juice ©   (10.06.05 22:59) [5]
А зависать приложение начинает на машинах у пользователей, причем сам тому свидетель, и даже кофея с коньяком не надо :)

Не находишь противоречия?


 
Juice ©   (2005-06-11 14:24) [10]

Нахожу. Каюсь. Но к делу это ведь не относится ?



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

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

Наверх




Память: 0.51 MB
Время: 0.054 c
4-1111843558
Sashag
2005-03-26 16:25
2005.07.11
Как общаться с capi2032.dll


1-1118440727
KOLIG
2005-06-11 01:58
2005.07.11
Открытие каталогов


14-1117931066
FVlad
2005-06-05 04:24
2005.07.11
Delphi или Basic


1-1117912910
Destroyer
2005-06-04 23:21
2005.07.11
Как организовать несколько визуальных режимов программы?


5-1089872243
ViJen
2004-07-15 10:17
2005.07.11
DbGrid, DateTimePicker и прокрутка