Сбой Delphi MapiSendMail в 64-разрядной версии Windows 7
У меня установлена 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
Locale ID: 1033
Дополнительная информация 1: d1ab
Дополнительная информация 2: d1ab624ec7d094c26a73530c245a3468
Дополнительная информация 3: d1ab
Дополнительная информация 4: d1ab624ec7d094c26a73530c245a3468
Любая помощь или идея будет очень цениться. Спасибо
1 ответ
Посмотрите на эту ссылку на Embarcadero, это может быть проблема Unicode.
Надеюсь, это поможет вам.