【问题标题】:Using RDOMail.Recipients.AddMultiple to add recipients to open Outlook mailitem使用 RDOMail.Recipients.AddMultiple 添加收件人以打开 Outlook 邮件项
【发布时间】:2016-10-05 21:45:28
【问题描述】:

我正在开发一个使用 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 邮件项中。我猜想扩展 MAPI 属性的更改不会自动反映在现有的邮件项中。有没有办法更新邮件项以显示这些更改?

【问题讨论】:

    标签: mapi outlook-redemption


    【解决方案1】:

    您可能想尝试使用MailItem.UserProperties.Add 添加用户属性(然后将其删除) - 这似乎会强制 OOM 刷新收件人列表。在使用 OOM 显示项目之前,我对这种方法很幸运;不知道它是否会在项目已经显示时起作用。

    【讨论】:

    • 非常感谢您的快速回复,Dimitry。我尝试了您建议的方法。不幸的是,它并没有强制刷新。我正在尝试其他尝试,如果我发现任何有效的东西,我会发布。同时,如果您有任何其他想法,请告诉我。
    • 有没有机会在邮件显示之前添加收件人?
    • 允许用户添加收件人的控件实际上嵌入在 mailitem 检查器本身的表单区域中,因此在添加收件人之前需要打开邮件。
    • 在我们预期的用例中,它的范围可能从一次只有一两个到一百个或更多。该加载项不适用于互联网营销规模的分发,其中单独添加每个收件人的性能成本是严重的,但能够使用 addmultiple(或在单个呼叫中添加多个收件人的其他方法)将是一个重要的性能增强。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-26
    • 1970-01-01
    • 1970-01-01
    • 2019-03-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多