使用RDOMail.Recipients.AddMultiple添加收件人以打开Outlook mailitem

时间:2016-10-05 05:51:42

标签: mapi outlook-redemption

我正在使用一个使用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来显示这些变化?

1 个答案:

答案 0 :(得分:0)

您可能希望尝试使用MailItem.UserProperties.Add添加用户属性(然后将其删除) - 这似乎迫使OOM刷新收件人列表。在使用OOM显示项目之前我很幸运;在项目已经显示时,不知道它是否有效。