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

How to accomplish a rebind and/or implement event handler in Outlook?

我创建了一个 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);
}

这几乎完美,但这是我观察到的:

  1. 在我的主 Outlook window 中,在电子邮件列表(列表视图?)中,当收到新电子邮件时,不会 显示预期的 contactInfo 第一次查看,例如假设我的光标在另一个订单项上。
  2. 当我从电子邮件列表视图中点击那封新电子邮件时,它现在被选中并且预览窗格(朝向下半部分)执行 显示正确的 contactInfo.
  3. 当我 双击 同一封电子邮件时,当电子邮件加载为新 window 时,发件人地址 DOES 显示正确的 contactInfo.
  4. 当我移动到主 Outlook window 电子邮件(列表视图?)中的另一封电子邮件时,之前 SELECTED 电子邮件 DOES 现在在 FROM 字段中显示正确的 contactInfo

如何解决#4?

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

我需要重新绑定吗?

此外,如何解决我的收件箱中已有电子邮件的问题?

您需要致电 MailItem.Save 以确保更改已提交。