2
A
답변
0
내 문제는 내 제다이 라이브러리를 최신 상태로 않네이었다. jedi 저장소로 검색하고 JclMapi가 12 월 27 일 화요일에 변경되었습니다 (Mantis 5748 : JclMapi와 64 비트 비 호환성) 이 변경 사항을 다운로드하여 pkg를 다시 컴파일하면 이제는 완벽하게 작동합니다!
어쨌든 고맙습니다!
2
난 그냥 클래스 내부에 랩하고 노력하고, 당신과 같은 있습니다.
나는 MAPI 내가 (보내기 실행이 처음에 OK 인 경우) 확인하기 위해 사용
function TMAPIPrerequisites.IsClientAvailable: Boolean;
var
SimpleMAPI: TJclSimpleMapi;
begin
SimpleMAPI := TJclSimpleMapi.Create;
try
Result := SimpleMAPI.AnyClientInstalled;
finally
SimpleMAPI.Free;
end;
end;
function TMAPIPrerequisites.IsMapiAvailable: Boolean;
var
SimpleMAPI: TJclSimpleMapi;
begin
SimpleMAPI := TJclSimpleMapi.Create;
try
Result := SimpleMAPI.SimpleMapiInstalled;
finally
SimpleMAPI.Free;
end;
end;
0
위 코드는 전자 메일 클라이언트가 이미 실행되고 있지 않은 경우 잘 작동합니다.
동일한 문제로 고생하고 나면 MAPI 클라이언트가 MAPI 서버 (전자 메일 클라이언트 - 내 경우에는 Thunderbird)와 동일한 사용자 컨텍스트에서 실행되어야한다는 것을 알게되었습니다.
그러나 관리자 권한으로 시작된 응용 프로그램 (예 : 디버거에서 실행되는 응용 프로그램)을 호출하면 MAPI 호출이 실패하고 오류 코드 2가 발생합니다. 호출자와 전자 메일 클라이언트가 모두 admin으로 실행 중이면 모든 것이 작동합니다 요즘 누가 이메일 클라이언트를 운영 할만큼 미친 짓이야?).
I 실행하기 전에 함수 "IsMapiAvailable"을 사용하는 TEmailWrapper라는 래퍼를 만들고 함수는 true를 반환하지만 보내기는 계속 MAPI를 throw합니다. 오류 : (2) "일반 MAPI 실패" –