我正在使用一个使用Redemption的Outlook加载项。加载项功能的一部分是允许用户一次将多个收件人添加到邮件项目。 Redemption的rdoRecipients对象包含一个“addmultiple”方法,可以提高该区域中加载项的性能。我的代码看起来像这样(rdoSession已经创建):
Redemption.RDOMail rdoMail = null;
Outlook.MailItem mailItem = (Outlook.MailItem)activeInspector.CurrentItem;
if (mailItem != null)
{
mailItem.Save();
rdoMail = mAddinModule.RdoSession.GetRDOObjectFromOutlookObject(mailItem);
List<object> toList = new List<object>();
// some code populating toList
Array toRcps = toList.ToArray();
rdoMail.Recipients.AddMultiple(toRcps, (int)Outlook.OlMailRecipientType.olTo);
rdoMail.Recipients.ResolveAll();
rdoMail.Save();
}
代码运行正常。使用OutlookSpy我可以看到MAPI收件人表包含正确的地址。此外,如果我添加一行rdoMail.Display()
,我会显示一个显示正确地址的新邮件项目。但是,地址不会显示在原始Outlook mailitem中。我猜测扩展MAPI属性的更改不会自动反映在现有的mailitem中。有没有办法可以更新mailitem来显示这些变化?
答案 0 :(得分:0)
您可能希望尝试使用MailItem.UserProperties.Add
添加用户属性(然后将其删除) - 这似乎迫使OOM刷新收件人列表。在使用OOM显示项目之前我很幸运;在项目已经显示时,不知道它是否有效。