Retrieves all public folders from MS Exchange Server 2007 or later version.
[Visual Basic] Public Function QueryEWSPublicFolders( _ ) As Imap4Folder() Public Async Function QueryEWSPublicFoldersAsync( _ ) As Task (Of Imap4Folder())
[C#] public Imap4Folder[] QueryEWSPublicFolders( ); public async Task<Imap4Folder[]> QueryEWSPublicFoldersAsync( );
[C++] public: array<Imap4Folder^> QueryEWSPublicFolders( );
[JScript] public function QueryEWSPublicFolders( ) : Imap4Folder [];
Return Value
Remarks
Since Exchange 2007 or later version (2007/2010/2013/2016/2019), IMAP4 protocol does not expose public folders to mail client. If you want to access public folders on MS Exchange 2007/2010/2013/2016/2019 or later version, you should use Exchange Web Service(EWS) protocol and MailClient.QueryEWSPublicFolders Method.
Example
[Visual Basic, C#, C++] The following example demonstrates how to retrieve public folders/emails from MS Exchange Server 2007/2010/2013/2016/2019 with EAGetMail POP3 & IMAP Component. To get the full samples of EAGetMail, please refer to Samples section.
[VB - Retrieve public folders on Exchange Server] Imports System Imports System.Globalization Imports System.IO Imports System.Text Imports EAGetMail Public Class TestClass Shared Sub EnumerateFolder(ByVal folders() As Imap4Folder, ByRef oClient As MailClient) For i As Integer = 0 To folders.Length - 1 Dim folder As Imap4Folder = folders(i) Console.WriteLine("Name: {0}", folder.Name) Console.WriteLine("FullPath: {0}", folder.FullPath) Console.WriteLine("LocalPath: {0}", folder.LocalPath) ' Select current folder oClient.SelectFolder(folder) ' Get email list in current selected folder. Dim infos() As MailInfo = oClient.GetMailInfos() Console.WriteLine("{0} mailbox has {1} emails", oClient.SelectedFolder, infos.Length) EnumerateFolder(folder.SubFolders, oClient) Next End Sub Public Sub RetrievePublicFolder(server As String, user As String, password As String, useSsl As Boolean) Try ' Only ExchangeEWS Protocol supports this feature ' EWS requires SSL by default, set useSsl to true Dim oServer As New MailServer(server, user, password, useSsl, ServerAuthType.AuthLogin, ServerProtocol.ExchangeEWS) Dim oClient As New MailClient("TryIt") oClient.Connect(oServer) Dim folders() As Imap4Folder = oClient.QueryEWSPublicFolders() ' Enumerates all public folders on MS Exchange server. EnumerateFolder(folders, oClient) oClient.Logout() Catch ep As Exception Console.WriteLine(ep.Message) End Try End Sub End Class
[C# - Retrieve public folders on Exchange Server] using System; using System.IO; using System.Globalization; using System.Text; using EAGetMail; class TestClass { static void EnumerateFolder(Imap4Folder[] folders, ref MailClient oClient) { for (int i = 0; i < folders.Length; i++) { Imap4Folder folder = folders[i]; Console.WriteLine("Name: {0}", folder.Name); Console.WriteLine("FullPath: {0}", folder.FullPath); Console.WriteLine("LocalPath: {0}", folder.LocalPath); // Select current folder oClient.SelectFolder(folder); // Get email list in current selected folder. MailInfo[] infos = oClient.GetMailInfos(); Console.WriteLine("{0} mailbox has {1} email(s)", oClient.SelectedFolder, infos.Length); EnumerateFolder(folder.SubFolders, ref oClient); } } public void RetrievePublicFolders(string server, string user, string password, bool useSsl) { try { // Only ExchangeEWS Protocol supports this feature // EWS requires SSL by default, set useSsl to true MailServer oServer = new MailServer(server, user, password, useSsl, ServerAuthType.AuthLogin, ServerProtocol.ExchangeEWS); MailClient oClient = new MailClient("TryIt"); oClient.Connect(oServer); Imap4Folder[] folders = oClient.QueryEWSPublicFolders(); // Enumerates all public folders on MS Exchange server. EnumerateFolder(folders, ref oClient); oClient.Logout(); } catch (Exception ep) { Console.WriteLine(ep.Message); } } }
[C++/CLI - Retrieve public folders on Exchange Server] using namespace System; using namespace System::Globalization; using namespace System::IO; using namespace EAGetMail; //add EAGetMail namespace static Void EnumerateFolder(array<Imap4Folder^>^folders, MailClient ^oClient) { for (int i = 0; i < folders->Length; i++) { Imap4Folder ^folder = folders[i]; Console::WriteLine("Name: {0}", folder->Name); Console::WriteLine("FullPath: {0}", folder->FullPath); Console::WriteLine("LocalPath: {0}", folder->LocalPath); // Select current folder oClient->SelectFolder(folder); // Get email list in current selected folder. array<MailInfo^>^infos = oClient->GetMailInfos(); Console::WriteLine("{0} mailbox has {1} emails", oClient->SelectedFolder, infos->Length); EnumerateFolder(folder->SubFolders, oClient); } } Void RetrievePublicFolders(String^ server, String^ user, String^ password, bool useSsl) { try { // Only ExchangeEWS Protocol supports this feature // EWS requires SSL by default, so set useSsl to true MailServer ^oServer = gcnew MailServer(server, user, password, useSsl, ServerAuthType::AuthLogin, ServerProtocol::ExchangeEWS); MailClient ^oClient = gcnew MailClient("TryIt"); oClient->Connect(oServer); array<Imap4Folder^>^folders = oClient->QueryEWSPublicFolders(); // Enumerates all public folders on MS Exchange server. EnumerateFolder(folders, oClient); oClient->Logout(); } catch (Exception ^ep) { Console::WriteLine(ep->Message); } }
See Also
MailClient.Imap4Folders Property
MailClient.CreateFolder Method
MailClient.DeleteFolder Method
MailClient.Move Method
MailClient.Copy Method
MailClient.SelectFolder Method
Online Tutorials
Manage Mail Folders in C#
Manage Mail Folders in VB
Manage Mail Folders in C++/CLI