2017-04-21 38 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

但問題不在於我們收到的郵件略有過時。問題是我們所得到的是兩年前的電子郵件。在這種情況下,用戶會比每兩年更頻繁地同步他們的郵箱。 –

相關問題