J'ai Windows 7 64 bits et mon Delphi sendmail se bloque lorsque vous essayez d'envoyer un e-mail pour la deuxième fois ou parfois même simplement attendre le premier envoi de courrier à remplir. La même application fonctionne avec Windows Vista.Delphi MapiSendMail Crashes sur Windows 7 64 bits
Ci-dessous est ma procédure de test dans l'envoi du mail:
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;
Erreur/crash message que je reçois:
signature Problème:
Problème Nom de l'événement: APPCRASH
Nom de l'application: mapitestp.exe
Version de l'application: 0.0.0.0
Application Horodatage: 4d82c905
Module Défaut Nom: ntdll.dll
Module de défaut Version: 6.1.7600.16559
défaut Module Timestamp: 4ba9b29c
code Exception: 4000001f
Exception Offset: 000a1dcf OS Version: 6.1.7600.2.0.0.256.1
locale ID: 1033
Informations complémentaires 1: d1ab
Informations complémentaires 2: d1ab624ec7d094c26a73530c245a3468
Informations complémentaires 3: d1ab
Informations complémentaires 4: d1ab624ec7d09 4c26a73530c245a3468
Toute aide ou idée serait grandement appréciée. Merci
La version 64 bits MAPI est-elle installée? – mjn
@mjn: une application 32 bits utilisera mapi 32 bits. – Remko
@Remko: une application 32 bits peut utiliser l'interface MAPI 64 bits pour la fonction MapiSendMail via un pont fourni par le système d'exploitation - ceci est documenté dans MSDN: http://msdn.microsoft.com/en-us/library/dd941355.aspx – mjn