使用RDOMail.Recipients.AddMultiple添加收件人以打开Outlook mailitem
问题描述:
我正在使用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以显示这些更改?
答
您可能想尝试使用MailItem.UserProperties.Add
添加用户属性(然后将其删除) - 似乎强制OOM刷新收件人列表。在使用OOM显示项目之前,我很幸运,不知道它是否会在物品已被显示的情况下工作。
非常感谢您的快速响应,Dimitry。我尝试了你建议的方法。不幸的是,它没有强制刷新。我正在尝试其他尝试,并会发布,如果我找到任何可行的。同时,如果您有任何其他想法,请让我知道。 –
您可以在显示消息之前添加收件人吗? –
允许用户添加收件人的控件实际上嵌入在mailitem检查器本身的表单区域中,因此需要在添加收件人之前打开邮件。 –