如何从使用缓存Exchange模式的配置文件中使用VBScript获取100个最新的Outlook电子邮件?

时间:2017-04-21 10:07:06

标签: vba outlook

我有一段脚本可以从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模式?

2 个答案:

答案 0 :(得分:0)

不,除了强制用户改变用户缓存其Outlook数据的时间之外,别无他法。可以这样想:用户告诉Outlook他们只想要使用最后几个月的数据。就自定义应用程序的范围和目的而言,这是他们与之交互的全部内容。自定义应用程序应该只假设他们可以访问的数据是全部,而不是更多。剩下的由用户开放供其他应用访问。

答案 1 :(得分:0)

您可以考虑使用EWS。有关详细信息,请参阅EWS Managed API, EWS, and web services in Exchange。在这种情况下,您将无法获得不可预测的结果,具体取决于用户与服务器同步以获取最新结果的时间。