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
以外的项目,例如 ContactItem
、AppointmentItem
、ReportItem
、等。你需要处理这样的项目。
要从 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
对象中的所有项目。
我仍然在编程领域。但是现在我遇到了小问题。我目前正在开发一个 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
以外的项目,例如 ContactItem
、AppointmentItem
、ReportItem
、等。你需要处理这样的项目。
要从 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
对象中的所有项目。