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;