Сбой Delphi MapiSendMail в 64-разрядной версии Windows 7 - PullRequest
2 голосов
/ 18 марта 2011

У меня установлена ​​64-битная версия Windows 7, и мой delphi sendmail аварийно завершает работу при попытке отправить письмо во второй раз, а иногда даже просто ожидает завершения первой отправки. То же приложение работает с Windows Vista.

Ниже приведена процедура проверки при отправке почты:

procedure TForm1.SendMail(const Subject, FileName: String);
var tmpName2, PFullFilePath, PSubject : Array[0..MAX_PATH] of AnsiChar;
    MapiMessage  : TMapiMessage;
    MapiFileDesc : TMapiFileDesc;
    MError       : Cardinal;
begin
  with MapiFileDesc do
  begin
     ulReserved:=0;
     flFlags:=0;
     nPosition:=Cardinal(-1);
     StrPCopy(PFullFilePath, FileName);
     lpszPathName:=PFullFilePath;
     StrPCopy(tmpName2,ExtractFileName(FileName));
     lpszFileName:=tmpName2;
     lpFileType:=nil;
   end;

   with MapiMessage do
   begin
      ulReserved := 0;
      StrPCopy(PSubject, Subject);
      lpszSubject := PSubject;
      lpszNoteText := nil;
      lpszMessageType := nil;
      lpszDateReceived := nil;
      lpszConversationID := nil;
      flFlags := 0;
      lpOriginator := nil;
      nRecipCount := 0;
      lpRecips := nil;
      nFileCount := 1;
      lpFiles := @MapiFileDesc;
   end;

   MError:=MapiSendMail(0,Application.Handle, MapiMessage, MAPI_DIALOG or MAPI_LOGON_UI or MAPI_NEW_SESSION, 0);

   if MError<>0 then
      Raise Exception.CreateFmt(IntToStr(MError), [MError]);
end;

Сообщение об ошибке / сбое, которое я получаю:

Подпись проблемы:
Имя события проблемы: APPCRASH
Имя приложения: mapitestp.exe
Версия приложения: 0.0.0.0
Метка времени применения: 4d82c905
Имя модуля неисправности: ntdll.dll
Версия модуля неисправности: 6.1.7600.16559
Временная метка модуля неисправности: 4ba9b29c
Код исключения: 4000001f
Смещение исключения: 000a1dcf Версия ОС: 6.1.7600.2.0.0.256.1
ID локали: 1033
Дополнительная информация 1: d1ab
Дополнительная информация 2: d1ab624ec7d094c26a73530c245a3468
Дополнительная информация 3: d1ab
Дополнительная информация 4: d1ab624ec7d094c26a73530c245a3468

Любая помощь или идея будут очень цениться. Спасибо

1 Ответ

1 голос
/ 18 марта 2011

Взгляните на эту ссылку на Embarcadero, это может быть проблема с Unicode.

Надеюсь, это поможет вам.

...