Sample code for 30+ languages & platforms
Dart

IMAP Capability

Demonstrates how to send the CAPABILITY command to request a listing of capabilities that the IMAP server supports. A capability name which begins with "AUTH=" indicates that the server supports that particular authentication mechanism.

Chilkat Dart Downloads

Dart
import 'package:chilkat/chilkat.dart';

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

  final imap = CkImap();

  // Use TLS
  imap.ssl = true;
  imap.port = 993;
  try {
    imap.connect('MY-IMAP-DOMAIN');
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  // Authenticate
  try {
    imap.login('MY-IMAP-LOGIN', 'MY-IMAP-PASSWORD');
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  // Get the list of capabilities:
  final caps = imap.capability();
  print('Capabilities: $caps');

  // Here is an example of the string returned:
  // * CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA ID XLIST CHILDREN X-GM-EXT-1 
  // UIDPLUS COMPRESS=DEFLATE ENABLE MOVE CONDSTORE ESEARCH UTF8=ACCEPT APPENDLIMIT=35882577
  // LIST-EXTENDED LIST-STATUS

  // Chilkat v9.5.0.58 introduces the HasCapability method to
  // check to see if a particular capability exists:
  if (imap.hasCapability('QUOTA', caps)) {
    print('IMAP server supports the QUOTA extension.');
  }

  if (imap.hasCapability('IDLE', caps)) {
    print('IMAP server supports IDLE.');
  }

  // Disconnect from the IMAP server.
  imap.disconnect();
}