1

我制作了一个程序,其中一个目的是打开 OutLook 客户端,用户可以在其中编写电子邮件、添加附件等。发送后我想获取添加到电子邮件中的所有附件,以及我程序中的所有电子邮件。我试图处理关闭事件

((Microsoft.Office.Interop.Outlook.ItemEvents_10_Event)email.oMsg).Close += new Microsoft.Office.Interop.Outlook.ItemEvents_10_CloseEventHandler(GetAttachmentsInfo);

进而

    if (email.oMsg.Attachments.Count > 0)
    {
        foreach (Microsoft.Office.Interop.Outlook.Attachment at in email.oMsg.Attachments )
        { attachments.Add(at); }
    }



     email is OutlookEMail
oMsg is Email Item
attachments is List<Attachment>

但是当我关闭客户端附件时会抛出找不到对象的异常。以及列表中的这些。

我知道 Microsoft.Office.Interop.Outlook.Attachment 不是文件,而只是包含文件名称和大小的文件路径。所以问题:在我的程序中关闭客户端后是否可以保存附件?(不使用 Email.SaveAttachments os SaveEmail 方法,因为它使用时间和计算机空间)?

4

1 回答 1

0

您可以尝试以下两个选项:

1. 您可以通过 收听文件夹的MailItem添加。SentItemsFolder.ItemAdd

Outlook.Folder sentItems = Application.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderSentMail) as Outlook.Folder;
sentItems.ItemAdd += new Outlook.ItemsEvents_ItemAddEventHandler(GetAttachmentsInfo);

2.您可以附加到MailItem.Send事件。

((Outlook.ItemEvents_10_Event)MailItem).Send  += new Outlook.ItemEvents_10_SendEventHandler(GetAttachmentsInfo);
于 2012-06-28T13:39:15.793 回答