Delphi JclMapi mapi一般故障
我有密码:Delphi JclMapi mapi一般故障,delphi,delphi-7,delphi-2010,Delphi,Delphi 7,Delphi 2010,我有密码: procedure TfrmMain.btnSendClick(Sender: TObject); var aMail: TJclEMail; begin aMail := TJclEMail.Create; Screen.Cursor := crHourGlass; try aMail.Recipients.Add('service@blabla.com'); aMail.Subject := '[IMPORTANT] blablba';
procedure TfrmMain.btnSendClick(Sender: TObject);
var
aMail: TJclEMail;
begin
aMail := TJclEMail.Create;
Screen.Cursor := crHourGlass;
try
aMail.Recipients.Add('service@blabla.com');
aMail.Subject := '[IMPORTANT] blablba';
aMail.Body := 'text text text text';
aMail.Send(True);
finally
Screen.Cursor := crDefault;
aMail.Free;
end;
end;
这将引发:MAPI错误:(2)“常规MAPI失败”
有什么想法吗
附言:
操作系统Windows 7
展望2010
Delphi 2007我和你一样,只是包装在一个类中,它正在工作 第一次执行Send()时,我使用检查MAPI是否正常:
我的问题是我的绝地图书馆不是最新的。我搜索绝地知识库,JclMapi在12月27日星期二发生了变化(螳螂5748:JclMapi与64位不兼容) 下载这些更改,重新编译pkg,现在可以完美地工作了
无论如何谢谢你 如果电子邮件客户端尚未运行,上述代码可以正常工作 在遇到同样的问题后,我发现MAPI客户端必须在与MAPI服务器相同的用户上下文中运行(在我的例子中是电子邮件客户端-Thunderbird)
但是,如果从以管理员权限启动的应用程序(例如在调试器中运行的应用程序)进行调用,则MAPI调用将失败,错误代码为2。如果调用方和电子邮件客户端都以管理员身份运行,则一切正常(但现在谁会疯狂到以管理员身份运行电子邮件客户端?)我创建了一个名为TEmailWrapper的包装器,发送方法在执行前使用您的函数“IsMapiAvailable”,函数返回true,但发送继续抛出MAPI错误:(2)“常规MAPI失败”
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;