Outlook Addin 在其他打开的 Outlook 中显示相同的对话框

本文关键字:Outlook 显示 对话框 Addin 其他 | 更新日期: 2023-09-27 18:36:43

我有一个Outlook AddIn,每次用户发送消息时都会显示一个对话框。

我正在打开对话框并获取有关 onItemSend 事件的消息信息。这按预期工作:发送邮件后,它会打开一个对话框,其中包含一些信息,例如收件人、主题等。

问题是当用户保持 Outlook 打开并从其他源(如手机或平板电脑)发送邮件时。用户发送邮件后,打开的 Outlook 将显示对话框,即使它不是从该实例发送的。

例如,有一个用户在家中和办公室安装了插件。他打开了自己的家庭Outlook,在忙碌了一天的工作之后,发送了几条消息并显示对话框,他在家里检查了他的Outlook。这将是几个打开的对话框,关于他白天发送的消息。

有没有办法限制对话框?打开用户从中发送消息的对话框?这样,用户将不会在任何其他打开的 Outlook 中有任何对话框......

谢谢

编辑

刚刚检查了我的代码,有一个误解(我的部分偏离了课程)。我从方法中删除了一些代码,只是为了更容易阅读......

代码中有两个事件处理程序:

Outlook.Folder sentbox;
Outlook.Items myOlItems = null;
this.itemsendhndler = newicrosoft.Office.Interop.Outlook.ApplicationEvents_11_ItemSendEventHandler(Application_ItemSend);
this.Application.ItemSend += itemsendhndler; 
this.hndler = new Outlook.ItemsEvents_ItemAddEventHandler(Application_ItemAdd);
sentbox = this.Application.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderSentMail) as Outlook.Folder;
myOlItems = sentbox.Items;
myOlItems.ItemAdd += this.hndler;

然后,在Application_ItemAdd有onItemSend方法,我认为它是Application_ItemSend...

void Application_ItemAdd(object Item)
{
    this.onItemSend(Item);
}

private void Application_ItemSend(object item, ref bool Cancel)
{
    Outlook.MailItem mail = item as MailItem;
    if (mail == null)
        return;
    //Make sure this is a E-mail message
    if (string.Compare(OutlookItemHelper.GetMessageClass(mail), "IPM.Note") != 0)
        return;
    mail.DeleteAfterSubmit = false;
    Outlook.Folder sentFolder = this.Application.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderSentMail) as Outlook.Folder;
    if (sentFolder != null)
        mail.SaveSentMessageFolder = sentFolder; // override the default sent items location
    Cancel = false;
}
private void onItemSend(object Item)
{
    Outlook.MailItem itm = null;
    itm = (Outlook.MailItem)Item;
    using (ExampleDialog dlg = new ExampleDialog())
    {
        //code after actions...
    }
}

无论如何,该对话框不会Application_ItemSend事件中打开。我的坏家伙...我今天学到了一些新东西!

谢谢大家,对于新手问题,我深表歉意...

Outlook Addin 在其他打开的 Outlook 中显示相同的对话框

你确定吗?Application.ItemSend 只会在实际发送邮件的 Outlook 实例上触发。另一方面,"已发送邮件"文件夹上的 Items.ItemAdd 事件将在 Outlook 的每个实例中触发。这就是你的代码正在做的事情吗?