我有代码:
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失败”有什么想法吗?
ps:操作系统Windows 7 Outlook 2010 Delphi 2007
发布于 2012-12-28 22:04:40
我的问题是我的绝地图书馆不是最新的。我在绝地资源库中搜索,发现JclMapi在12月27日星期二发生了变化(Mantis5748: JclMapi与64位不兼容)。下载此更改,重新编译pkg,现在可以完美地工作了!
无论如何,谢谢你!
发布于 2012-12-28 06:54:32
我有和你一样的东西,只是包装在一个类中,它正在工作。
我用来在第一次执行Send()时检查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;发布于 2014-11-27 02:21:47
如果电子邮件客户端尚未运行,则上面的代码运行良好。
在解决了同样的问题之后,我发现MAPI客户端必须在与MAPI服务器相同的用户上下文中运行(在我的例子中是电子邮件客户端- Thunderbird )。
但是,如果从具有管理员权限的应用程序开始调用(例如,在调试器中运行的应用程序),则MAPI调用将失败,并返回错误代码2。如果调用者和电子邮件客户端都以管理员身份运行,则一切正常(但现在谁会疯狂到以管理员身份运行电子邮件客户端?)。
https://stackoverflow.com/questions/14061425
复制相似问题