2016-10-05 83 views
0

我正在使用Redemption的Outlook加载项。部分加载项的功能是允许用户一次将多个收件人添加到mailitem。兑换的rdoRecipients对象包含一个“addmultiple”方法,可以提高此区域中加载项的性能。我的代码如下所示(rdoSession已创建):使用RDOMail.Recipients.AddMultiple添加收件人以打开Outlook mailitem

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

您可能想尝试使用MailItem.UserProperties.Add添加用户属性(然后将其删除) - 似乎强制OOM刷新收件人列表。在使用OOM显示项目之前,我很幸运,不知道它是否会在物品已被显示的情况下工作。

+0

非常感谢您的快速响应,Dimitry。我尝试了你建议的方法。不幸的是,它没有强制刷新。我正在尝试其他尝试,并会发布,如果我找到任何可行的。同时,如果您有任何其他想法,请让我知道。 –

+0

您可以在显示消息之前添加收件人吗? –

+0

允许用户添加收件人的控件实际上嵌入在mailitem检查器本身的表单区域中,因此需要在添加收件人之前打开邮件。 –

相关问题