6

我可以提取电子邮件,浏览它们,将它们标记为已读,甚至排序。但是,当我尝试通过 ReceivedTime 进行限制时,它似乎不起作用。无论我输入什么日期/时间,我都一无所获。我知道 ReceivedTime 在我删除限制时基于排序工作是有效的。有什么建议么?

Application app = new Application();
NameSpace outlookNs = app.GetNamespace("MAPI");

Microsoft.Office.Interop.Outlook.Folders folders = outlookNs.Folders[ohOptions.PSTName].Folders
Microsoft.Office.Interop.Outlook.Items items = folders["Inbox"].Items;

DateTime dt = DateTime.Now.Subtract(new TimeSpan(1,0,0));
items = items.Restrict("[ReceivedTime] > '" + dt.ToString("MM/dd/yyyy hh:mm:ss tt") + "'");

items.Sort("[ReceivedTime]", OlSortOrder.olAscending);

foreach (MailItem item in items)
{
    String from = item.SenderEmailAddress;
}
4

2 回答 2

11

发现了问题。只花了三天时间,因为似乎没有任何内容提到这些日期/时间的格式。它似乎不喜欢秒或 AM/PM 在那里。使用军用时间并剥离秒数可以使其正常工作。

items = items.Restrict("[ReceivedTime] > '" + dt.ToString("MM/dd/yyyy HH:mm") + "'");
于 2013-06-19T14:09:40.183 回答
0

确保当前区域设置日期格式确实是 MM/dd/yyyy,而不是 dd/MM/yyyy。

于 2013-06-18T14:13:37.287 回答