在Outlook中检索当前电子邮件正文

本文关键字:电子邮件 正文 检索 Outlook | 更新日期: 2023-09-27 18:36:39

在我的 Outlook 插件中,我想在功能区上添加一个按钮,因此当用户单击此按钮时,我想检索当前所选电子邮件的正文,我有此代码,但它仅从收件箱中检索第一封电子邮件,因为索引为 1:

Microsoft.Office.Interop.Outlook.Application myApp = new Microsoft.Office.Interop.Outlook.Application();
Microsoft.Office.Interop.Outlook.NameSpace mapiNameSpace = myApp.GetNamespace("MAPI");
Microsoft.Office.Interop.Outlook.MAPIFolder myInbox = mapiNameSpace.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderInbox);
String body = ((Microsoft.Office.Interop.Outlook.MailItem)myInbox.Items[1]).Body;

那么如何在Outlook中检索当前打开的电子邮件呢? ,此方法对我有用,但我需要获取当前电子邮件的索引。

谢谢。

在Outlook中检索当前电子邮件正文

您不应该每次都初始化新的Outlook.Application()实例。大多数外接程序框架通常通过名为 Application 的字段或属性为您提供与当前 Outlook 会话对应的Outlook.Application实例。您应该在外接程序的生存期内使用它。

若要获取当前选定的项,请使用:

Outlook.Explorer explorer = this.Application.ActiveExplorer();
Outlook.Selection selection = explorer.Selection;
if (selection.Count > 0)   // Check that selection is not empty.
{
    object selectedItem = selection[1];   // Index is one-based.
    Outlook.MailItem mailItem = selectedItem as Outlook.MailItem;
    if (mailItem != null)    // Check that selected item is a message.
    {
        // Process mail item here.
    }
}

请注意,上述内容将允许您处理第一个选定的项目。如果选择了多个项目,则可能需要循环处理它们。

在顶部添加对

using Outlook = Microsoft.Office.Interop.Outlook;

然后在方法内部;

Outlook._Application oApp = new Outlook.Application();
if (oApp.ActiveExplorer().Selection.Count > 0)
            {
                Object selObject = oApp.ActiveExplorer().Selection[1];
                if (selObject is Outlook.MailItem)
                {
                    Outlook.MailItem mailItem = (selObject as Outlook.MailItem);
                    String htmlBody = mailItem.HTMLBody;
                    String Body = mailItem.Body;
                 }
             }

您也可以在查看邮件之前更改将在Outlook中显示的正文。