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