C#从Outlook获取邮件及其附件

时间:2012-06-28 09:15:01

标签: c# email outlook

我已经制作了程序,其中一个目的是打开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方法,因为它使用时间和计算机空间)?

1 个答案:

答案 0 :(得分:0)

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

1。您可以通过Folder.ItemAdd收听MailItem文件夹的SentItems次添加内容。

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);