MailClient.GetEWSPublicFolderList Method


Retrieves all public folders from MS Exchange Server 2007 or later version.

[Visual Basic 6.0]
Public Function GetEWSPublicFolderList( _
) As  FolderCollection
[Visual C++]
public: HRESULT GetEWSPublicFolderList(
IFolderCollection* pVal
);

Return Value

A Imap4Folder collection containing the public folders on MS Exchange Server 2007 or later version.

Remarks

Since Exchange 2007 or later version (2010/203), IMAP4 protocol does not expose public folders to mail client. If you want to access public folders on MS Exchange 2007/2010/2013 or later version, you should use Exchange Web Service(EWS) protocol and MailClient.QueryEWSPublicFolders Method.

Example

[Visual Basic, VBScript, VC++] The following example demonstrates how to retrieve public folders/emails from MS Exchange Server 2007/2010/2013 with EAGetMail POP3 & IMAP Component. To get the full samples of EAGetMail, please refer to Samples section.

[Visual Basic 6.0]
Public Sub Retrieve_Public_Folders(ByVal Server As String, _
ByVal User As String, _
ByVal Password As String, _
ByVal SSLConnection As Boolean)

Const MailServerPop3 = 0
Const MailServerImap4 = 1
Const MailServerEWS = 2
Const MailServerDAV = 3

    ' Only ExchangeEWS Protocol supports this feature
    ' and also set sslConnection to True 
On Error GoTo ErrorHandle
    Dim oServer As New EAGetMailObjLib.MailServer
    oServer.Server = Server
    oServer.User = User
    oServer.Password = Password
    oServer.SSLConnection = True
    oServer.Protocol = MailServerEWS
    
    Dim oClient As New EAGetMailObjLib.MailClient
    oClient.LicenseCode = "TryIt"
    
    oClient.Connect oServer
    
     'enumerates all public folders on MS Exchange server.
    EnumerateFolder oClient.GetEWSPublicFolderList(), oClient
    oClient.Logout
    
    Exit Sub
ErrorHandle:
    MsgBox Err.Description
End Sub

Public Sub EnumerateFolder(oFolders, oClient)
    Dim i As Integer
    For i = 0 To oFolders.Count - 1
        Dim oFolder As EAGetMailObjLib.Imap4Folder
        Set oFolder = oFolders.Item(i)

        Dim s
        s = "Name: " & oFolder.Name & Chr(13) & Chr(10)
        s = s & "FullPath: " & oFolder.FullPath & Chr(13) & Chr(10)
        s = s & "LocalPath: " & oFolder.LocalPath & Chr(13) & Chr(10)
        s = s & "Flags: " & oFolder.IMAP4FolderFlags & Chr(13) & Chr(10)
        s = s & "Subscribed: " & oFolder.Subscribed & Chr(13) & Chr(10)

        MsgBox s

        oClient.SelectFolder oFolder
        MsgBox oClient.SelectedFolder
        'then you can use oClient.GetMailInfos to retrieve the emails in this folder

        EnumerateFolder oFolder.SubFolderList
    Next   
End Sub


[VBScript] Public Sub Retrieve_Public_Folders(ByVal Server, _ ByVal User, _ ByVal Password, _ ByVal SSLConnection) Const MailServerPop3 = 0 Const MailServerImap4 = 1 Const MailServerEWS = 2 Const MailServerDAV = 3 ' Only ExchangeEWS Protocol supports this feature ' and also set sslConnection to True Dim oServer Set oServer = CreateObject("EAGetMailObj.MailServer") oServer.Server = Server oServer.User = User oServer.Password = Password oServer.SSLConnection = True oServer.Protocol = MailServerEWS Dim oClient Set oClient = CreateObject("EAGetMailObj.MailClient") oClient.LicenseCode = "TryIt" oClient.Connect oServer 'enumerates all public folders on MS Exchange server. EnumerateFolder oClient.GetEWSPublicFolderList(), oClient oClient.Logout End Sub Public Sub EnumerateFolder(oFolders, oClient) Dim i For i = 0 To oFolders.Count - 1 Dim oFolder Set oFolder = oFolders.Item(i) Dim s s = "Name: " & oFolder.Name & Chr(13) & Chr(10) s = s & "FullPath: " & oFolder.FullPath & Chr(13) & Chr(10) s = s & "LocalPath: " & oFolder.LocalPath & Chr(13) & Chr(10) s = s & "Flags: " & oFolder.IMAP4FolderFlags & Chr(13) & Chr(10) s = s & "Subscribed: " & oFolder.Subscribed & Chr(13) & Chr(10) MsgBox s oClient.SelectFolder oFolder MsgBox oClient.SelectedFolder 'then you can use oClient.GetMailInfos to retrieve the emails in this folder EnumerateFolder oFolder.SubFolderList Next End Sub
[Visual C++] #include "stdafx.h" #include <windows.h> #include "eagetmailobj.tlh" using namespace EAGetMailObjLib; void EnumerateFolder(IFolderCollectionPtr &folders, IMailClientPtr &oClient) { for(long i = 0; i < folders->Count; i++) { IImap4FolderPtr oFolder = folders->GetItem(i); _tprintf(_T("Name: %s\r\n"), (TCHAR*)oFolder->Name); _tprintf(_T("FullPath: %s\r\n"), (TCHAR*)oFolder->FullPath); _tprintf(_T("LocalPath: %s\r\n"), (TCHAR*)oFolder->LocalPath); _tprintf(_T("Flags: %s\r\n"), (TCHAR*)oFolder->IMAP4FolderFlags); if(oFolder->Subscribed == VARIANT_TRUE) _tprintf(_T("Subscribed: True\r\n\r\n")); else _tprintf(_T("Subscribed: False\r\n\r\n")); oClient->SelectFolder(oFolder); _tprintf(_T("Selected folder: %sr\n"), (const TCHAR*)oClient->SelectedFolder); // then you can use oClient.GetMailInfos to retrieve the emails in this folder IFolderCollectionPtr subFolders = oFolder->SubFolderList; EnumerateFolder(subFolders); } } void Retrieve_Public_Folders(LPCTSTR lpszServer, LPCTSTR lpszUser, LPCTSTR lpszPassword, VARIANT_BOOL SSLConnection) { ::CoInitialize(NULL); const int MailServerPop3 = 0; const int MailServerImap4 = 1; const int MailServerEWS = 2; const int MailServerDAV = 3; try { IMailServerPtr oServer = NULL; oServer.CreateInstance(__uuidof(EAGetMailObjLib::MailServer)); // Only ExchangeEWS Protocol supports this feature // and also set SSLConnection to True oServer->Server = lpszServer; oServer->User = lpszUser; oServer->Password = lpszPassword; oServer->SSLConnection = VARIANT_TRUE; oServer->Protocol = MailServerEWS; IMailClientPtr oClient = NULL; oClient.CreateInstance(__uuidof(EAGetMailObjLib::MailClient)); oClient->LicenseCode = _T("TryIt"); oClient->Connect(oServer); IFolderCollectionPtr folders = oClient->GetEWSPublicFolderList(); //enumerates all public folders on MS Exchange server. EnumerateFolder(folders, oClient); } catch(_com_error &ep) { ::_tprintf(_T("%s\r\n"), (TCHAR*)ep.Description() ); } ::CoUninitialize(); }

See Also

MailClient.CreateFolder Method
MailClient.DeleteFolder Method
MailClient.Move Method
MailClient.Copy Method
MailClient.SelectFolder Method

Online Tutorials

Manage Mail Folders in VB6
Manage Mail Folders in Delphi
Manage Mail Folders in VC++