VSTO-Outlook 2007-发送邮件前是否显示表单?

VSTO-Outlook 2007-发送邮件前是否显示表单?,vsto,outlook-2007,Vsto,Outlook 2007,我是Outlook加载项编程新手,不确定这是否可行: 我想显示一个弹出表单(或选择),并在用户单击“发送”时请求用户输入。基本上,每当他们发送电子邮件(New或Reply)时,都会要求他们在下拉框中选择一个值(最好列出SQL数据库中的项目)。 根据他们的选择,将在邮件主题后附加一条文本消息。 我做了研究,看起来我应该使用表单区域,但我不确定当用户单击“发送”时如何显示弹出/额外表单。 另外,看起来表单区域可以用来扩展/替换当前的查看邮件表单,但是我可以用它来创建新表单吗 谢谢大家的时间。您可以

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

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

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


谢谢大家的时间。

您可以在ThisAddIn内部启动方法中添加Item Send事件处理程序,然后在Item Send事件中调用自定义表单(windows表单)。 在下面的示例中,我在发送电子邮件项目之前和单击发送按钮之后调用自定义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;
    }
}