Microsoft.Office.Interop.Outlook.Items.Restrict - not working correctly

自闭症网瘾萝莉.ら 提交于 2019-11-30 09:15:49

问题


I can pull email, walk through them, mark them as read, even sort. However, when I tried to restrict by ReceivedTime, it doesn't seem to be working. I get nothing back no matter what date/time I put in. I know ReceivedTime is valid based on the Sort works when I remove the restrict. Any suggestions?

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

回答1:


Found the problem. Only took three days as there doesn't seem to be anything that mentions formatting for these date/times. It seems it doesn't like the seconds or the AM/PM to be there. Using military time and stripping the seconds allows it to work correctly.

items = items.Restrict("[ReceivedTime] > '" + dt.ToString("MM/dd/yyyy HH:mm") + "'");



回答2:


Make sure the current locale date format is really MM/dd/yyyy, not dd/MM/yyyy.



来源:https://stackoverflow.com/questions/17169646/microsoft-office-interop-outlook-items-restrict-not-working-correctly

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!