使用MAPI_E_NO_RECIPIENTS

时间:2017-11-20 04:51:24

标签: delphi outlook-redemption

  • 赎回:5.10.0.4312
  • Delphi 2007/32
  • MS Office 365 / Outlook 2016 v1710

昨天下载的Windows更新("功能更新到Windows 10,版本1709和#34;)已破坏发送邮件的赎回代码。简化的代码是:

OutlookApp  := GetActiveOleObject(Outlook_Application_Class);
OLNameSpace := OutlookApp.GetNameSpace(MAPI_NAMESPACE);
OLNameSpace.Logon;

myOutlookItem := OutlookApp.CreateItem(olMailItem);
myItem := CreateOLEObject(Redemption_SafeMailItem_Class);
myItem.Item := myOutlookItem;

myRecipient := myItem.Recipients.Add(toRecipient); // <---- 'test@testing.com'
myRecipient.Type := olTo;
myItem.Recipients.ResolveAll;  // <----------- myItem.Recipient count = 0

myItem.Subject := AMessage_Subject;
myItem.Body := AMessage_Body;

myItem.Send;  // <--- ERROR: Error in IMessage.SubmitMessage: MAPI_E_NO_RECIPIENTS

如果我不使用Redemption,它可以正常工作。

如果我将myItem.Recipients.Add更改为myOutlookItem.Recipients.Add,我会收到MAPI_E_AMBIGUOUS_RECIP

还尝试过:

  • 重新启动Windows
  • 重新注册赎回DLL
  • 使用myItem.Recipients.AddEx
  • 尝试最新的兑换版本,5.15.0.4892

有关下一步尝试的建议吗?

由于

1 个答案:

答案 0 :(得分:1)

已知Windows更新会清除一些负责MAPI编组的注册表项。您可以尝试从https://groups.yahoo.com/neo/groups/Outlook-Redemption/conversations/topics/9600安装注册表修复程序或尝试重新安装Outlook。