---
product: Chilkat
product_version: 11.7.0
language: pascal
language_label: Lazarus Pascal
class: Mailboxes
license: bundle
deprecated: false
reference_html: https://www.chilkatsoft.com/refdoc/pascal_MailboxesRef.html
---
# Chilkat Mailboxes — Lazarus Pascal — v11.7.0

> Chilkat 11.7.0 · language=pascal · class=Mailboxes
> Other versions: replace `11.7.0` in this URL. Other languages: `https://www.chilkatsoft.com/ai-docs/v/11.7.0/<lang>/classes/Mailboxes.md`.
> Language-wide rules (install, unlock, error model, strings/bytes): `https://www.chilkatsoft.com/ai-docs/v/11.7.0/pascal/guide.md`.

## Purpose

**Inspect IMAP mailbox names and attributes returned by Chilkat.Imap.**

`Chilkat.Mailboxes` is a read-only result collection populated by `Chilkat.Imap.MbxList`. Applications inspect the returned mailbox names and attributes but do not directly add, remove, or modify entries. The class provides indexed access to mailbox flags, selectable status, marked status, whether child mailboxes exist, and whether child mailboxes may be created.

**Mailbox collection**

Receive the read-only list of IMAP mailboxes populated by `Chilkat.Imap.MbxList`.

**Indexed mailbox access**

Use the mailbox count and index-based methods to retrieve each mailbox name in the returned collection.

**Mailbox flags**

Inspect IMAP flags associated with each mailbox, including standard and server-specific attributes.

**Selectable status**

Determine whether a mailbox can be selected and opened for message access.

**Hierarchy information**

Check whether a mailbox has child mailboxes or whether children may be created beneath it.

**Marked status**

Detect whether a mailbox is marked or unmarked according to the attributes returned by the IMAP server.

**Common pattern:** Call `Chilkat.Imap.MbxList` to populate a `Mailboxes` object, loop from `0` to `Count - 1`, retrieve each mailbox name, and inspect its flags or selectable status. Mailbox names are exposed as normal Unicode text; Chilkat automatically handles modified UTF-7 or IMAP UTF-8 at the protocol level.

For an extended overview, see [Mailboxes Class Overview](https://www.chilkatsoft.com/mailboxes_class_overview.asp).

## Object creation, unlocking and error handling

**Create / Free**

```pascal
uses
  Chilkat.Mailboxes;

var
  obj: TMailboxes;
begin
  obj := TMailboxes.Create;
  try
    if not obj.IsValid then
      raise Exception.Create('Failed to create a TMailboxes instance.');

    // ... use obj ...

  finally
    obj.Free;
  end;
end;
```

`constructor Create;`

Allocates the underlying CkMailboxes object and returns a new TMailboxes instance. Simply adding **Chilkat.Mailboxes** to the unit's `uses` clause is enough to locate and bind to the Chilkat shared library (DLL / .so / .dylib) at runtime — no separate load step is required. Check `obj.IsValid` after calling `Create`; it is `False` if the underlying library could not be found/loaded or the object could not be allocated (for example, when unlicensed).

`destructor Destroy; override;`

Every TMailboxes created by calling `Create` should eventually be released by calling `.Free` (inherited from `TObject`). The destructor automatically disposes the underlying CkMailboxes handle. A native (unmanaged) memory leak occurs if the object is never freed.

Call `Global.UnlockBundle` once at the start of the program, before using this or any other Chilkat class. Any string unlocks a fully functional 30-day trial; a purchased unlock code is used in production. See `guide.md` for the exact code in Lazarus Pascal.

## Members common to every Chilkat class

Documented once per language in `common-members.md`; listed here so this page is self-contained.

| Property | Signature | Access | Meaning |
|---|---|---|---|
| `DebugLogFilePath` | `property DebugLogFilePath: string read GetDebugLogFilePath write SetDebugLogFilePath;` | read/write | If set to a file path, this property logs the LastErrorText of each Chilkat method or property call to the specified file. |
| `LastErrorHtml` | `property LastErrorHtml: string read GetLastErrorHtml;` | read-only | Provides HTML-formatted information about the last called method or property. |
| `LastErrorText` | `property LastErrorText: string read GetLastErrorText;` | read-only | Provides plain text information about the last called method or property. |
| `LastErrorXml` | `property LastErrorXml: string read GetLastErrorXml;` | read-only | Provides XML-formatted information about the last called method or property. |
| `LastMethodSuccess` | `property LastMethodSuccess: Boolean read GetLastMethodSuccess write SetLastMethodSuccess;` | read/write | Indicates the success or failure of the most recent method call: `True` means success, `False` means failure. |
| `VerboseLogging` | `property VerboseLogging: Boolean read GetVerboseLogging write SetVerboseLogging;` | read/write | If set to `True`, then the contents of LastErrorText (or LastErrorXml, or LastErrorHtml) may contain more verbose information. |
| `Version` | `property Version: string read GetVersion;` | read-only | Version of the component/library, such as "10.1.0" |

## Member index

| Member | Kind | Signature |
|---|---|---|
| `Count` | property, read-only | `property Count: Integer read GetCount;` |
| `GetFlags` | method | `function GetFlags(index: Integer): string;` |
| `GetMailboxIndex` | method | `function GetMailboxIndex(const mbxName: string): Integer;` |
| `GetName` | method | `function GetName(index: Integer): string;` |
| `GetNthFlag` | method | `function GetNthFlag(index: Integer;     flagIndex: Integer): string;` |
| `GetNumFlags` | method | `function GetNumFlags(index: Integer): Integer;` |
| `HasFlag` | method | `function HasFlag(index: Integer;     const flagName: string): Boolean;` |
| `HasInferiors` | method | `function HasInferiors(index: Integer): Boolean;` |
| `IsMarked` | method | `function IsMarked(index: Integer): Boolean;` |
| `IsSelectable` | method | `function IsSelectable(index: Integer): Boolean;` |
| `LoadTaskResult` | method | `// task is a TTask object. function LoadTaskResult(task: TChilkatBase): Boolean;` |

## Properties

### Mailboxes.Count

`Chilkat 11.7.0 · pascal · Mailboxes · Count · property · read-only`

```pascal
property Count: Integer read GetCount;
```

Returns the number of mailboxes in this collection. An empty collection has a count of `0`.

`Mailboxes` is a read-only result container populated by `Imap.MbxList`. Applications inspect the returned entries but do not directly add, remove, or modify mailboxes in this object.

## Methods

### Mailboxes.GetFlags

`Chilkat 11.7.0 · pascal · Mailboxes · GetFlags · method`

```pascal
function  GetFlags(index: Integer): string;
```

Returns a comma-separated list of flags for the mailbox at the zero-based index specified by `index`.

For example:

```
\HasNoChildren,\Important
```

To inspect the flags individually, use `GetNumFlags` and `GetNthFlag`.

Returns True for success, False for failure.

### Mailboxes.GetMailboxIndex

`Chilkat 11.7.0 · pascal · Mailboxes · GetMailboxIndex · method`

```pascal
function  GetMailboxIndex(const mbxName: string): Integer;
```

Returns the zero-based index of the mailbox whose name matches `mbxName`.

Pass `mbxName` as a normal Unicode mailbox name. Chilkat automatically handles the protocol-level modified UTF-7 or IMAP UTF-8 representation; the application should not encode the mailbox name manually.

The returned index can be used with methods such as `GetName`, `GetFlags`, and `IsSelectable`.

### Mailboxes.GetName

`Chilkat 11.7.0 · pascal · Mailboxes · GetName · method`

```pascal
function  GetName(index: Integer): string;
```

Returns the name of the mailbox at the zero-based index specified by `index`.

The name is returned as normal Unicode text. Chilkat automatically decodes modified UTF-7 or IMAP UTF-8 mailbox names received from the server and automatically performs the corresponding encoding when the name is passed to an `Imap` method.

The returned name can therefore be passed directly to methods that select, examine, create, rename, delete, copy to, or otherwise operate on a mailbox. Do not manually encode or decode the mailbox name.

Returns True for success, False for failure.

### Mailboxes.GetNthFlag

`Chilkat 11.7.0 · pascal · Mailboxes · GetNthFlag · method`

```pascal
function  GetNthFlag(index: Integer;
    flagIndex: Integer): string;
```

Returns one flag from a mailbox in the collection.

- `index` is the zero-based mailbox index.
- `flagIndex` is the zero-based flag index within that mailbox.

Call `GetNumFlags` to determine the number of flags available for the mailbox.

Returns True for success, False for failure.

### Mailboxes.GetNumFlags

`Chilkat 11.7.0 · pascal · Mailboxes · GetNumFlags · method`

```pascal
function  GetNumFlags(index: Integer): Integer;
```

Returns the number of flags associated with the mailbox at the zero-based index specified by `index`.

Returns `-1` if `index` is outside the valid mailbox-index range. Use `GetNthFlag` to retrieve the individual flags.

### Mailboxes.HasFlag

`Chilkat 11.7.0 · pascal · Mailboxes · HasFlag · method`

```pascal
function  HasFlag(index: Integer;
    const flagName: string): Boolean;
```

Returns `True` if the mailbox at the zero-based index specified by `index` contains the flag named by `flagName`.

Flag-name comparison is case-insensitive. Include the leading backslash when checking an IMAP system flag or mailbox attribute, for example `\Marked`, `\Noselect`, or `\HasChildren`.

### Mailboxes.HasInferiors

`Chilkat 11.7.0 · pascal · Mailboxes · HasInferiors · method`

```pascal
function  HasInferiors(index: Integer): Boolean;
```

Returns `True` if the mailbox at the zero-based index specified by `index` either has child mailboxes or permits child mailboxes to be created beneath it.

**Important distinction:** `\HasNoChildren` means that no child mailboxes currently exist. It does not mean that children cannot be created. The IMAP `\Noinferiors` attribute means that child mailboxes cannot be created.

### Mailboxes.IsMarked

`Chilkat 11.7.0 · pascal · Mailboxes · IsMarked · method`

```pascal
function  IsMarked(index: Integer): Boolean;
```

Returns `True` if the mailbox at the zero-based index specified by `index` has the IMAP `\Marked` attribute.

`\Marked` is a server-provided hint that the mailbox may contain messages added since it was last selected. It is advisory information returned by the mailbox-listing operation.

### Mailboxes.IsSelectable

`Chilkat 11.7.0 · pascal · Mailboxes · IsSelectable · method`

```pascal
function  IsSelectable(index: Integer): Boolean;
```

Returns `True` if the mailbox at the zero-based index specified by `index` can be selected or examined for message access.

A mailbox having the IMAP `\Noselect` attribute is not selectable, even though it may appear in the mailbox hierarchy and may contain selectable child mailboxes.

### Mailboxes.LoadTaskResult

`Chilkat 11.7.0 · pascal · Mailboxes · LoadTaskResult · method · since 9.5.0.52`

```pascal
// task is a TTask object.

function  LoadTaskResult(task: TChilkatBase): Boolean;
```

Loads this object from a completed asynchronous task whose result is a `Mailboxes` collection.

`task` must reference a completed `Task` returned by the asynchronous form of an operation that produces mailbox-listing results.

Returns True for success, False for failure.

