Mac*_*Mac 4 c# sorting outlook date
在处理电子邮件并将数据输入数据库时,我需要按处理时间对收到的电子邮件进行排序.
我需要它,以便将要接收的最新电子邮件放入数据库以覆盖旧版本(如果有旧版本).
Microsoft.Office.Interop.Outlook.Items item =(Outlook.Items)source.Items;
Source是包含我想要排序的电子邮件的文件夹
我试过这四种方式:
items.Sort("ReceivedTime", false);
items.Sort("[ReceivedTime]", Outlook.OlSortOrder.olAscending);
items.Sort("ReceivedTime", Outlook.OlSortOrder.olSortNone);
items.Sort("[ReceivedTime]");
Run Code Online (Sandbox Code Playgroud)
这似乎没有把它排序为它仍然将最老的数据库放入数据库第二,覆盖最新的提交.
有任何想法吗?
我花了很多时间试图找出同样的问题.
看来Microsoft Interop.outlook中存在某种错误,如果你直接尝试从文件夹中排序它根本不起作用.
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);
Run Code Online (Sandbox Code Playgroud)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) { // This time it will work } }
归档时间: |
|
查看次数: |
8798 次 |
最近记录: |