В зависимости от каких-либо условий я пытаюсь скопировать новое письмо (только во входящие) в другую папку.Папка находится на том же уровне, что и другие папки по умолчанию, такие как Входящие, Исходящие, Черновики.Ниже приведен мой код:
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
Debug.WriteLine(ThisAddIn.isAddInOn);
outlookNameSpace = this.Application.GetNamespace("MAPI");
inbox = outlookNameSpace.GetDefaultFolder(
Microsoft.Office.Interop.Outlook.
OlDefaultFolders.olFolderInbox);
items = inbox.Items;
items.ItemAdd += new Outlook.ItemsEvents_ItemAddEventHandler(items_ItemAdd);
}
Ниже приведен код для items_ItemAdd
:
void items_ItemAdd(object Item)
{
Outlook.MailItem mail = (Outlook.MailItem)Item;
Debug.WriteLine("mail");
Debug.WriteLine(mail == null);
if (mail!= null)
{#code to move mail to particular folder}
Я не написал полный код функции.Потому что эта функция не моя проблема.Моя проблема items_ItemAdd
вызывается несколько раз.Например:
- Когда придет новое электронное письмо
- Когда электронное письмо будет перемещено в другую папку.
Я не хочу EventHandlerчтобы вызвать на приведенном выше втором примере.И когда он вызывается во второй раз, функция items_ItemAdd
получает и очищает почтовый объект.Таким образом, я получаю следующее исключение:
Исключение:
'System.Runtime.InteropServices.COMException' in OutlookAddIn2.dll
System.Runtime.InteropServices.COMException (0xBDD40107): The operation failed.
at Microsoft.Office.Interop.Outlook._MailItem.get_Body()
at OutlookAddIn2.ThisAddIn.items_ItemAdd(Object Item)
Это
inbox = outlookNameSpace.GetDefaultFolder(
Microsoft.Office.Interop.Outlook.
OlDefaultFolders.olFolderInbox);
, указывающее на все папки?