循环收件箱并保存附件

时间:2016-04-05 14:39:32

标签: c# .net outlook-addin

我想在某一天找到一封电子邮件并保存附件。我的代码如下。

我遇到的问题是,调试时我收件箱中的所有项目都不是MailItem类型,尽管我在收件箱中看到它们。我错过了什么?

更新

在调试时,当我查看oFld.Items.Count时,它会显示4890,这是我收件箱中的电子邮件数量。我想我没有正确使用item.GetType部分

public void SaveAttachment(DateTime dateEmail, string emailSubject, string saveLocation)
        {
            Outlook.Application oApp = new Outlook.Application();
            Outlook.NameSpace oNs = oApp.GetNamespace("MAPI");
            Outlook.MAPIFolder oFld = oNs.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);

            foreach (object item in oFld.Items)
            {
                if (item.GetType() == typeof(Outlook.MailItem))
                {
                    Outlook.MailItem oMail = (Outlook.MailItem)item;

                    if (oMail.ReceivedTime < dateEmail)
                        return;

                    if (oMail.ReceivedTime.Date == dateEmail)
                    {
                        if (oMail.Subject.Contains(emailSubject))
                        {
                            for (int i = 0; i < oMail.Attachments.Count; i++)                                
                                oMail.Attachments[i].SaveAsFile(saveLocation + oMail.Attachments[i].FileName);                                
                        }
                    }
                }
            }
        }

1 个答案:

答案 0 :(得分:1)

试试这个:

    foreach (object item in oFld.Items)
    {
        MailItem mailItem = item as MailItem;

        if (mailItem != null)
        {
            //blablabla
        }
    }

这似乎适合某些人。