VSTO - Outlook 2007 - 在发送消息之前显示表单?

时间:2009-11-16 05:45:26

标签: vsto outlook-2007

我是Outlook加载项编程的新手,不确定这是否可行:

我想显示弹出窗体(或选择),并在单击“发送”时询问用户输入。基本上,每当他们发送电子邮件(新邮件或回复邮件)时,都会要求他们在下拉框中选择一个值(最好从SQL数据库中列出项目)。 根据他们的选择,文本消息将附加到邮件的主题。

我做了我的研究,看起来我应该使用表单区域,但我不确定如何在用户单击“发送”时显示弹出/额外表单。 此外,表单区域可以用于扩展/替换当前的VIEW邮件表单,但是我可以将它用于创建新表单吗?

感谢大家的时间。

1 个答案:

答案 0 :(得分:5)

您可以在ThisAddIn Internal Startup方法中添加Item Send事件处理程序,然后在Item Send Event中调用自定义表单(Windows窗体)。 在下面的示例中,我在发送电子邮件项目之前以及单击“发送”按钮之后将自定义窗体表单作为模式对话框调用。

private void InternalStartup()
{
    this.Application.ItemSend += new ApplicationEvents_11_ItemSendEventHandler(Application_ItemSend);
}

void Application_ItemSend(object Item, ref bool Cancel)
{
    if (Item is Microsoft.Office.Interop.Outlook.MailItem)
    {
        Microsoft.Office.Interop.Outlook.MailItem currentItem = Item as Microsoft.Office.Interop.Outlook.MailItem; 
        Cancel = true;
        Forms frmProject = new ProjectForm();;

        DialogResult dlgResult = frmProject.ShowDialog();

        if (dlgResult == DialogResult.OK) 
            System.Windows.Forms.SendKeys.Send("%S"); //If dialog result is OK, save and send the email item
        else
            Cancel = false; 

        currentItem.Save();
        currentItem = null;
    }
}