2011-03-18 2 views
2

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

+0

La version 64 bits MAPI est-elle installée? – mjn

+0

@mjn: une application 32 bits utilisera mapi 32 bits. – Remko

+2

@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

Répondre

1

Jetez un oeil à ce Link à Embarcadero, il peut être un problème Unicode.

J'espère que ça vous aide.

+0

Merci pour le lien; Cependant, StrPCopy convertit déjà la chaîne en PAnsiString, ce qui est requis par lpszPathName ou lpszFileName. – user474079

Questions connexes