Outlook 添加 VSTO

Outlook Add In VSTO

我仍然在编程领域。但是现在我遇到了小问题。我目前正在开发一个 Outlook 加载项,它接收一封电子邮件并将其作为附件打包到一封新邮件中,并自动将其发送到特定地址。到目前为止效果很好。但是,只有当我在新 window.

中打开了我想作为附件发送的邮件时,它才有效

但我的目标是,如果邮件在阅读区打开就足够了。但是,不幸的是,我还没有找到解决这个问题的方法。也许有人可以给我一个 link 或一个例子来解决邮件,目前在预览中显示 Visual Studio。作为一门语言我使用C#。

至此我打开的邮件如下:

String path = "C:\Test\Mail.msg";

Inspector inspector = Globals.ThisAddIn.Application.ActiveInspector();
MailItem mailitem = inspector.CurrentItem as MailItem

但是如何到达阅读区可以预览的邮件呢?

非常感谢您的帮助。

使用 Application.ActiveExplorer.Selection 集合循环遍历选定的消息并适当地处理它们。

请记住(就像 Application.ActiveInspector) 一样,您可以使用 MailItem 以外的项目,例如 ContactItemAppointmentItemReportItem、等。你需要处理这样的项目。

要从 Outlook 中的资源管理器 window 中获取当前选定的项目,您需要使用以下代码:

        if (Application.ActiveExplorer().Selection.Count > 0)
        {
            Object selObject = this.Application.ActiveExplorer().Selection[1];
            if (selObject is Outlook.MailItem)
            {
                Outlook.MailItem mailItem =
                    (selObject as Outlook.MailItem);
                itemMessage = "The item is an e-mail message." +
                    " The subject is " + mailItem.Subject + ".";
                mailItem.Display(false);
            }
            else if (selObject is Outlook.ContactItem)
            {
                Outlook.ContactItem contactItem =
                    (selObject as Outlook.ContactItem);
                itemMessage = "The item is a contact." +
                    " The full name is " + contactItem.Subject + ".";
                contactItem.Display(false);
            }
            else if (selObject is Outlook.AppointmentItem)
            {
                Outlook.AppointmentItem apptItem =
                    (selObject as Outlook.AppointmentItem);
                itemMessage = "The item is an appointment." +
                    " The subject is " + apptItem.Subject + ".";
            }
            else if (selObject is Outlook.TaskItem)
            {
                Outlook.TaskItem taskItem =
                    (selObject as Outlook.TaskItem);
                itemMessage = "The item is a task. The body is "
                    + taskItem.Body + ".";
            }
            else if (selObject is Outlook.MeetingItem)
            {
                Outlook.MeetingItem meetingItem =
                    (selObject as Outlook.MeetingItem);
                itemMessage = "The item is a meeting item. " +
                     "The subject is " + meetingItem.Subject + ".";
            }
        }

但是如果您需要在资源管理器视图中获取所有选定的项目,您需要遍历 Selection 对象中的所有项目。