The handler I've attached to the folder's ItemAdd event is not firing. I don't know why. The variable folderTestItems
is declared at class-level, so it shouldn't be garbage-collected, right? I've walked through the code in the debugger, and the handler is being attached: folderTestItems.Items.ItemAdd += Items_ItemAdd;
I am dragging a message from folder Inbox into folder TEST. Does that action not cause the ItemAdd
to fire? If not, how do I detect that action?
public partial class ThisAddIn
{
Outlook.MAPIFolder folderTestItems;
<snip>
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
Outlook.NameSpace nameSpace = this.Application.GetNamespace("MAPI");
Outlook.MAPIFolder folderInbox = nameSpace.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);
folderTestItems = folderInbox.Folders["TEST"];
if (folderTestItems != null)
{
// we do get here
folderTestItems.Items.ItemAdd += Items_ItemAdd;
}
}
private void Items_ItemAdd(object Item)
{
// we never get here
if (Item is Outlook.MailItem)
{
Outlook.MailItem mailItem = (Item as Outlook.MailItem);
string itemMessage = "The item is an e-mail message." +
" The HTMLBody is " + mailItem.HTMLBody + ".";
mailItem.Display(false);
MessageBox.Show(itemMessage);
}
}
}