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

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

Виснет приложение при выводе окна Создание сообщения эл.почты [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]

а как Вы вызываете этот метод?


Наверх

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