Sample code for 30+ languages & platforms
Delphi ActiveX Requires Chilkat v11.0.0+

Subscribe to Mailboxes and List Subscribed Mailboxes

See more IMAP Examples

Demonstrates how to list subscribed mailboxes, and unsubscribe/subscribe to a mailbox.

Chilkat Delphi ActiveX Downloads

Delphi ActiveX
var
success: Integer;
imap: TChilkatImap;
refName: WideString;
wildcardedMailbox: WideString;
subscribed: Integer;
mboxes: TMailboxes;
i: Integer;

begin
success := 0;

//  This example assumes the Chilkat API to have been previously unlocked.
//  See Global Unlock Sample for sample code.

imap := TChilkatImap.Create(Self);

//  Connect to an IMAP server.
//  Use TLS
imap.Ssl := 1;
imap.Port := 993;
success := imap.Connect('imap.example.com');
if (success = 0) then
  begin
    Memo1.Lines.Add(imap.LastErrorText);
    Exit;
  end;

//  Login
success := imap.Login('myLogin','myPassword');
if (success = 0) then
  begin
    Memo1.Lines.Add(imap.LastErrorText);
    Exit;
  end;

//  First examine the already subscribed mailboxes.
refName := '';
wildcardedMailbox := '*';
subscribed := 1;

mboxes := TMailboxes.Create(Self);
success := imap.MbxList(subscribed,refName,wildcardedMailbox,mboxes.ControlInterface);
if (success = 0) then
  begin
    Memo1.Lines.Add(imap.LastErrorText);
    Exit;
  end;

i := 0;
while i < mboxes.Count do
  begin
    Memo1.Lines.Add(mboxes.GetName(i));
    i := i + 1;
  end;

Memo1.Lines.Add('----');

//  Sample output.

//  INBOX
//  INBOX/recent
//  INBOX/misc
//  INBOX/misc/solutions
//  ...
//  Outbox
//  Deleted Items
//  Sent Items
//  Drafts
//  Junk E-mail
//  Trash
//  Sent
//  Templates

//  Let's unsubscribe to "INBOX/misc/solutions".
success := imap.Unsubscribe('INBOX/misc/solutions');
if (success = 0) then
  begin
    Memo1.Lines.Add(imap.LastErrorText);
    Exit;
  end;

//  Get the list of subscribed mailboxes again to verify that "INBOX/misc/solutions" is missing.
success := imap.MbxList(subscribed,'','INBOX/misc*',mboxes.ControlInterface);
if (success = 0) then
  begin
    Memo1.Lines.Add(imap.LastErrorText);
    Exit;
  end;

i := 0;
while i < mboxes.Count do
  begin
    Memo1.Lines.Add(mboxes.GetName(i));
    i := i + 1;
  end;

Memo1.Lines.Add('----');

//  Re-subscribe to "INBOX/misc/solutions".
success := imap.Subscribe('INBOX/misc/solutions');
if (success = 0) then
  begin
    Memo1.Lines.Add(imap.LastErrorText);
    Exit;
  end;

//  Get the list of subscribed mailboxes again to verify that "INBOX/misc/solutions" is back in the list.
success := imap.MbxList(subscribed,'','INBOX/misc*',mboxes.ControlInterface);
if (success = 0) then
  begin
    Memo1.Lines.Add(imap.LastErrorText);
    Exit;
  end;

i := 0;
while i < mboxes.Count do
  begin
    Memo1.Lines.Add(mboxes.GetName(i));
    i := i + 1;
  end;

Memo1.Lines.Add('----');

//  Disconnect from the IMAP server.
success := imap.Disconnect();