我花了很多时间试图解决同样的问题。
似乎Microsoft Interop.outlook存在某种bug,如果直接尝试从文件夹中进行排序,则根本不起作用。
Microsoft.Office.Interop.Outlook.Application app = new Microsoft.Office.Interop.Outlook.Application();
Microsoft.Office.Interop.Outlook._NameSpace ns = app.GetNamespace("MAPI");
Microsoft.Office.Interop.Outlook.MAPIFolder inboxFolder = null;
inboxFolder = ns.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderInbox);
(注:以上内容为IT技术相关内容的翻译)
inboxFolder.Items.Sort("[ReceivedTime]", false);
foreach (var item in inboxFolder.Items)
{
// ITEMS ARE NOT SORTED
}
为了使其工作,您必须将它们复制到不同的列表中,然后进行排序。下面的示例将起作用。
```
Outlook.Application app = new Outlook.Application();
Outlook.NameSpace outlookNs = app.GetNamespace("MAPI");
Outlook.MAPIFolder emailFolder = outlookNs.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderInbox);
Outlook.Items myItems = emailFolder.Items;
myItems.Sort("[ReceivedTime]", false);
foreach (var item in myItems)
{
var itemObj = item as MailItem;
if (itemObj != null)
{
// 这次会起作用
}
}
```