检测当前的Outlook窗口是否为转发邮件?

4

我有一个Outlook插件。我有一个检查处理程序,当打开新窗口时调用一个方法。如果当前窗口是转发邮件窗口(单击电子邮件中的转发按钮时打开的窗口),我希望该方法只执行“某些操作”。我的当前代码可以工作,但它适用于所有新窗口,包括回复/新电子邮件等。

请问如何检查新窗口是否为转发电子邮件窗口?

我的代码:

...
Outlook.Inspectors olInspectors;

private void ThisAddIn_Startup(object sender, System.EventArgs e)
    {  ......
        olInspectors = this.Application.Inspectors;
        olInspectors.NewInspector += new Outlook.InspectorsEvents_NewInspectorEventHandler(Forward_Message_Inspector);
    }

void Forward_Message_Inspector(Microsoft.Office.Interop.Outlook.Inspector Inspector)
    {
      //how do I check here if current window is a forward message window?
          //and then do something
    }

非常感谢您提前提供的任何帮助。

2个回答

5

您可以使用电子邮件的主题来检查此内容。

void Forward_Message_Inspector(Microsoft.Office.Interop.Outlook.Inspector Inspector)
{
    Outlook.MailItem mailItem = Inspector.CurrentItem as Outlook.MailItem;
    if (mailItem != null)
    {
        if (mailItem.Subject.StartsWith("FW: "))
        {
          //do something here
        }
    }
}

您可以通过分析邮件正文来完成此操作。

那是一个很好的建议!它起作用了!非常感谢你! :) - Polzi
2
我会采用Eric提出的另一种方法。主题可以由用户或程序进行修改。因此,您不能始终依赖主题行。 - Eugene Astafiev

4
你可以将你的检查器处理程序/包装程序连接到仅在MailItem.Forward事件发生时处理窗口 - 但你还需要一个MailItem处理程序/包装程序。
另一种方法是使用PropertyAccessor对象检查MailItem上的PR_ICON_INDEX值(对于转发,该值为262)或PR_LAST_VERB_EXECUTED值(对于转发,该值为104)。

太好了!谢谢。如果我使用一个包装器,我会采用这种方法。 - Polzi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接