当同时撰写多封电子邮件时,除一封电子邮件外,Outlook 不会触发 AttachmentAdd 事件
Outlook does not fire the AttachmentAdd event except for one email when multiple emails are composed at the same time
我正在编写一个 Outlook 加载项,并且正在连接到 mailItem 的 AttachmentAdd 事件。它在撰写一封电子邮件时按预期工作,但当同时撰写多封电子邮件时,AttachmentAdd 事件似乎仅针对添加附件的第一封电子邮件触发。
我不确定这是否与 RCW 超出范围有关。
我正在使用 Outlook 365 64 位,如果有帮助的话。
代码如下:
public partial class MyAddIn
{
private void OutlookAddIn_Startup(object sender, System.EventArgs e)
{
Application.ItemLoad += NewItem_Load;
}
private void NewItem_Load(object item)
{
Outlook.MailItem newMailItem = null;
newMailItem = item as Outlook.MailItem;
if (newMailItem != null)
{
newMailItem.AttachmentAdd -= MailItem_AttachmentAdd;
newMailItem.AttachmentAdd += MailItem_AttachmentAdd;
}
}
// This gets called only for one email.
private void MailItem_AttachmentAdd(Outlook.Attachment attachment)
{
// Do some stuff here.
}
private void OutlookAddIn_Shutdown(object sender, System.EventArgs e)
{
Application.ItemLoad -= NewItem_Load;
// Log
}
protected override Microsoft.Office.Core.IRibbonExtensibility CreateRibbonExtensibilityObject()
{
return new MyRibbon(this);
}
#region VSTO generated code
private void InternalStartup()
{
this.Startup += new System.EventHandler(OutlookAddIn_Startup);
this.Shutdown += new System.EventHandler(OutlookAddIn_Shutdown);
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
}
}
您正在为局部变量 (newMailItem
) 设置事件处理程序,该变量将在 NewItem_Load()
退出后的某个时间点释放。
变量必须保持活动状态才能引发事件。您可以将声明移动到 class 级别,但您可以拥有多个未清项。尝试创建一个包含 MailItem
作为其成员的包装器 class,并将该包装器存储在列表中。
我正在编写一个 Outlook 加载项,并且正在连接到 mailItem 的 AttachmentAdd 事件。它在撰写一封电子邮件时按预期工作,但当同时撰写多封电子邮件时,AttachmentAdd 事件似乎仅针对添加附件的第一封电子邮件触发。
我不确定这是否与 RCW 超出范围有关。
我正在使用 Outlook 365 64 位,如果有帮助的话。
代码如下:
public partial class MyAddIn
{
private void OutlookAddIn_Startup(object sender, System.EventArgs e)
{
Application.ItemLoad += NewItem_Load;
}
private void NewItem_Load(object item)
{
Outlook.MailItem newMailItem = null;
newMailItem = item as Outlook.MailItem;
if (newMailItem != null)
{
newMailItem.AttachmentAdd -= MailItem_AttachmentAdd;
newMailItem.AttachmentAdd += MailItem_AttachmentAdd;
}
}
// This gets called only for one email.
private void MailItem_AttachmentAdd(Outlook.Attachment attachment)
{
// Do some stuff here.
}
private void OutlookAddIn_Shutdown(object sender, System.EventArgs e)
{
Application.ItemLoad -= NewItem_Load;
// Log
}
protected override Microsoft.Office.Core.IRibbonExtensibility CreateRibbonExtensibilityObject()
{
return new MyRibbon(this);
}
#region VSTO generated code
private void InternalStartup()
{
this.Startup += new System.EventHandler(OutlookAddIn_Startup);
this.Shutdown += new System.EventHandler(OutlookAddIn_Shutdown);
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
}
}
您正在为局部变量 (newMailItem
) 设置事件处理程序,该变量将在 NewItem_Load()
退出后的某个时间点释放。
变量必须保持活动状态才能引发事件。您可以将声明移动到 class 级别,但您可以拥有多个未清项。尝试创建一个包含 MailItem
作为其成员的包装器 class,并将该包装器存储在列表中。