我想在某一天找到一封电子邮件并保存附件。我的代码如下。
我遇到的问题是,调试时我收件箱中的所有项目都不是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);
}
}
}
}
}
答案 0 :(得分:1)
试试这个:
foreach (object item in oFld.Items)
{
MailItem mailItem = item as MailItem;
if (mailItem != null)
{
//blablabla
}
}
这似乎适合某些人。