2017-04-21 39 views
0

我有一段脚本,从一个Outlook收件箱抓住100名最近接收到的电子邮件。在没有使用缓存Exchange模式的Outlook配置文件中,它可以正常工作,为我们提供了最近的100封电子邮件。但是,如果Outlook配置文件启用了缓存Exchange模式,两年前我从一个看似随机的时间点开始收到100封电子邮件。我如何使用VBScript从使用缓存Exchange模式配置文件100个最近的Outlook电子邮件?

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

没有,没有办法强迫用户改变多远时光倒流用户缓存的Outlook数据等。这样想:用户告诉Outlook他们只想要最后几个月的数据。就自定义应用程序的范围和目的而言,这是他们与之交互的所有内容。一个自定义的应用程序应该只假设他们可以访问的数据是全部存在的,没有更多。其余的由用户决定开放给其他应用程序访问。

+0

谢谢您的回答,但请原谅我,我有点困惑。也许我没有解释得很好。他们的邮箱显示三四年的电子邮件。而我想访问的总是100个最近的电子邮件。但是该脚本从2015年开始随机返回100封电子邮件。我认为这与存储在PST文件中的内容和OST文件有关。就像Outlook只能回复PST文件中的内容。 –

+0

好的,我明白了。我无法解释你所看到的行为; AFAIK它应该返回最新的可用项目时按日期降序排序。顺便说一句,pst文件和一个ost之间没有关系;后者从不用于Exchange帐户(除非它是传递文件夹,这是不寻常的)。 –

0

您可以考虑使用EWS来代替。有关更多信息,请参阅EWS Managed API, EWS, and web services in Exchange。在这种情况下,根据用户与服务器同步以获取最新内容的时间,您不会得到不可预测的结果。

+0

但问题不在于我们收到的邮件略有过时。问题是我们所得到的是两年前的电子邮件。在这种情况下,用户会比每两年更频繁地同步他们的邮箱。 –

相关问题