首页 文章

可以读取存储在Exchange服务器上的邮件

提问于
浏览
0

我连接到交换服务器,以便一些邮件存储在我的本地Outlook文件中,一些邮件存储在服务器上 . 在outlook中,文件夹的项目数(我想要读出)显示13.000项 . 但是当我尝试通过VBA迭代项目时:

Sub asdf()
Dim objOutlook As Outlook.Application
Set objOutlook = CreateObject("Outlook.Application")
Dim objMAPIFolder As Object
Dim objFolder As Object
Dim myItem As Outlook.MailItem
Dim archivFolder As Outlook.Folder
Dim subFolder As Outlook.Folder
For Each objMAPIFolder In objOutlook.Session.Folders
For Each objFolder In objMAPIFolder.Folders
    If objFolder.Name = "Inbox" Then
    Set archivFolder = objFolder
    For Each subFolder In archivFolder.Folders
            If subFolder.Name = "Folder X" Then
             MsgBox subFolder.Items.Count 'should be 13.000 but says 5.000
            End If
        Next
        End If
    Next
Next
Set objOutlook = Nothing
End Sub

这显示我的数量为5.000 . 在Outlook中,我可以单击“单击此处以查看有关Microsoft Exchange的更多信息”并查看其余邮件 .

如何通过VBA迭代基于服务器的Mails?

关心Wolle

1 回答

  • 0

    在扩展MAPI级别(C或Delphi)上,您可以open the folder in the online mode访问远程存储的消息 .

    如果是VBA(或其他lnaguages,如C#或VB.Net),如果使用Redemption是一个选项,它可以在在线模式下打开文件夹(其RDOSession . GetFolderFromID 方法允许传递 MAPI_NO_CACHE 标志):

    MAPI_NO_CACHE = &H200
         MAPI_BEST_ACCESS = &H10
         set Session = CreateObject("Redemption.RDOSession")
         Session.MAPIOBJECT = objOutlook.Session.MAPIOBJECT
    ...
         set rFolder = Session.GetFolderFromID(subFolder.EntryID, , MAPI_NO_CACHE + MAPI_BEST_ACCESS)
         MsgBox rFolder.Items.Count
    

相关问题