![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Виснет приложение при выводе окна Создание сообщения эл.почты [D5, XP]
bav9 © (2005-12-15 13:37:00)При использовании следующей процедуры, если пытаюсь показать окно создаваемого сообщения на экране (pokaz:=true), окно Сообщения появляется, но приложение зависает на команде MM.Send(pokaz); и окошко Сообщения тоже ни на что не реагирует. Что я делаю не так ?..
procedure tform1.SendMail(Subject, Body, RecvAddress : string; Attachs : array of string; pokaz:boolean);
var
MM, MS : Variant;
i : integer;
begin
MS := CreateOleObject('MSMAPI.MAPISession');
try
MM := CreateOleObject('MSMAPI.MAPIMessages');
try
MS.DownLoadMail := False;
MS.NewSession := False;
MS.LogonUI := True;
MS.SignOn;
MM.SessionID := MS.SessionID;
MM.Compose;
MM.RecipIndex := 0;
MM.RecipAddress := RecvAddress;
MM.MsgSubject := Subject;
MM.MsgNoteText := Body;
for i := Low(Attachs) to High(Attachs) do
begin
MM.AttachmentIndex := i;
MM.AttachmentPathName := Attachs[i];
end;
MM.Send(pokaz); //true - показать окно созданного Сообщения, false - отправить письмо сразу.
MS.SignOff;
finally
VarClear(MS);
end;
finally
VarClear(MM);
end; //}//
end;
umbra (2005-12-15 16:08:00) [1]согласно документации, чтобы отправитьсообщение надо вызвать Send с параметром true, а чтобы сохранить в аутбокс и не отправлять- с параметром false. Если сообщение уходит на сервер, то оно должно лежать не в папке Outbox, а в папке Sent (Отправленные). Так что проверте , есть ли связь с сервером
bav9 (2005-12-15 15:48:00) [2]Сталикивался ли кто..?
bav9 (2005-12-15 15:01:00) [3]Есть. См. предыдущий ответ. Сообщения УХОДЯТ, но если только не выводить их на экран. Если же вывести - приложение виснет.. (Окно созданного сообщения - это стандартное окно Outlook Express (у меня стоит версия 6) которое выводится в Outlook-е если щелкнуть в нем кнопку Создать сообщение. Только у меня это окно вызывается из моей программы, заполняются все нужные поля и .. зависаем..
umbra (2005-12-15 14:34:00) [4]а связь с почтовым сервером есть?
bav9 (2005-12-15 14:05:00) [5]Так и вызываю :
SendMail(s4, s2, s3, sss, p1);
где
s4 - string - тема сообщения
s2 - string - текст самого сообщения
s3 - string - адрес на который надо отправить сообщение
sss - array of strinf - массив с полными путями и именами к файлам для вложения (типа ["C:\tmp\qq1.txt", "C:\tmp\qq2.txt"] )
p1 - boolean - если =true - сразу не отправлять, а предварительно показать созданное сообщение на экране
=false - не показывать сообщение, а сразу отправлять.
Если поставить =false, то сообщение нормально появляется в папке Исходящие Outlook Express и уходит.
НО ! Если поставить =true - на экране ПОЯВЛЯЕТСЯ окно созданного сообщения, все поля у него ПРАВИЛЬНО заполнены, файлы - вложены.. и все.. приложение и само окно ни на что не реагируют. А надо, чтобы окно появилось, и приложение продолжало свою работу, т.к. необходимо таких окон вывести сразу несколько, т.е. отправить несколько писем на разные адреса с разными вложенными файлами.
umbra (2005-12-15 13:43:00) [6]а как Вы вызываете этот метод?