如何在Outlook中完成重新绑定和/或实现事件处理程序?

时间:2015-01-07 05:01:55

标签: c# outlook vsto exchange-server outlook-addin

我创建了一个Outlook 2013加载项,我想在其中更新FROM字段中显示的内容,即发件人。在我的事件处理程序中,ThisAddIn_Startup(),AI添加另一个事件处理程序,Application.NewMailEx + = Application_NewMail_Ex。在此事件处理程序Application_NewMail_Ex()中,我正在设置以下属性:

void Application_NewMailEx(string entryId)
{
    object item = this.Session.GetItemFromID(entryId);
    Outlook.MailItem mailItem = (Outlook.MailItem)item;
    String contactInfo = getContact(mailItem);  // gets the property I want...
    mailItem.PropertyAccessor.SetProperty(PR_SENDER_NAME, contactInfo);
    mailItem.PropertyAccessor.SetProperty(PR_SENT_REPRESENTING_NAME, contactInfo);
}

这个ALMOST非常有效,但这正是我所观察到的:

  1. 在我的主Outlook窗口中,在电子邮件列表(列表视图?)中,当有新电子邮件进入时,不会首先显示预期的 contactInfo 观点,例如让我们说我的光标在另一个订单项上。
  2. 当我从电子邮件列表视图对新电子邮件进行点击时,它现在是SELECTED,预览窗格(朝向下半部分) DOES 显示正确的 CONTACTINFO 即可。
  3. 当我在同一封电子邮件中 DOUBLE-CLICK 时,当电子邮件作为新窗口加载时,FROM地址 DOES 会显示正确的 contactInfo
  4. 当我移动到电子邮件的主Outlook窗口中的另一封电子邮件(列表视图?)时,之前 SELECTED 电子邮件 DOES 现在显示正确的 contactInfo 在FROM字段中。
  5. 我如何解决#4?

    我应该关注哪些其他事件?

    我必须做某种重新绑定吗?

    另外,如何使用收件箱中已有的电子邮件解决问题?

1 个答案:

答案 0 :(得分:1)

您需要调用MailItem.Save以确保提交更改。