我有一段脚本可以从Outlook收件箱中抓取最近收到的100封电子邮件。它在没有使用缓存Exchange模式的Outlook配置文件中正常工作,向我们提供最近的100封电子邮件。但是,如果Outlook配置文件启用了缓存Exchange模式,那么两年前看似随机的时间点会收到100封电子邮件。
Dim olApp As Outlook.Application, olNs As Outlook.Namespace
Dim olFolder As Outlook.MAPIFolder
Dim olMail As Outlook.MailItem
Dim i As Long
Set olApp = New Outlook.Application
Set olNs = olApp.GetNamespace("MAPI")
Set olFolder = olNs.GetDefaultFolder(olFolderInbox)
Set myItems = olFolder.Items
myItems.Sort "[ReceivedTime]", True
For i = 1 To 100
If TypeOf myItems(i) Is MailItem Then
Set olMail = myItems(i)
...
' do something with each email
...
End If
Next i
是否有更好的方法可以获得100条最近的电子邮件,无论是否启用了缓存Exchange模式?
答案 0 :(得分:0)
不,除了强制用户改变用户缓存其Outlook数据的时间之外,别无他法。可以这样想:用户告诉Outlook他们只想要使用最后几个月的数据。就自定义应用程序的范围和目的而言,这是他们与之交互的全部内容。自定义应用程序应该只假设他们可以访问的数据是全部,而不是更多。剩下的由用户开放供其他应用访问。
答案 1 :(得分:0)
您可以考虑使用EWS。有关详细信息,请参阅EWS Managed API, EWS, and web services in Exchange。在这种情况下,您将无法获得不可预测的结果,具体取决于用户与服务器同步以获取最新结果的时间。