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

Examine Yahoo Mail IMAP Session Log

See more Yahoo Mail Examples

To examine the IMAP session log, set the KeepSessionLog property = _TRUE_, and then examine the contents of the SessionLog property.

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.

  // See Get Yahoo Mail OAuth2 Access Token for Desktop App 
  // for sample code showing how to obtain a Yahoo Mail access token.

  // In this example, our access token was previously saved to the following file which contains JSON like this:
  // {
  //   "access_token": "kCVQdnOdul...LHucA--",
  //   "refresh_token": "AIenVXETSo0jklFBVkPS8vVm8E.Ej9ToRG.xDbDYmZ65WIs5t6CZhDrD",
  //   "expires_in": 3600,
  //   "token_type": "bearer",
  //   "xoauth_yahoo_guid": "HGDQCVF5JB4YDOWHITQJFBHCWA"
  // }

  final json = CkJsonObject();
  try {
    json.loadFile('qa_data/tokens/yahooMail.json');
  } on ChilkatException {
    print('Failed to load Yahoo Mail access token file.');
    return;
  }

  final accessToken = json.stringOf('access_token');

  // Do OAuth2 authentication by using the access token as the password in the Login method below...
  final imap = CkImap();

  imap.ssl = true;
  imap.port = 993;

  // Tell Chilkat IMAP to keep a session log.
  imap.keepSessionLog = true;

  // Connect to the Yahoo IMAP server.
  try {
    imap.connect('imap.mail.yahoo.com');
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  // Indicate that XOAUTH2 authentication is to be used:
  imap.authMethod = 'XOAUTH2';

  // Login
  // Use the email address of the Yahoo Mail account that granted authorization.
  try {
    imap.login('user@yahoo.com', accessToken);
    print('Successfully authenticated with Yahoo IMAP using XOAUTH2!');
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
  }

  // Get the list of mailboxes.
  final refName = '';
  final wildcardedMailbox = '*';
  final subscribed = false;

  final mboxes = CkMailboxes();
  try {
    imap.mbxList(subscribed, refName, wildcardedMailbox, mboxes);
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  var i = 0;
  while (i < mboxes.count) {
    print(mboxes.getName(i));
    i++;
  }

  // Sample output looks like this:

  // Archive
  // Bulk Mail
  // Draft
  // Inbox
  // Inbox/emailsWithAttach
  // Inbox/test
  // Sent
  // Trash

  // Examine the session log
  print(imap.sessionLog);

  // Sample session log

  // ----INFO----
  // Connecting to IMAP server at imap.mail.yahoo.com:993
  // ----IMAP RESPONSE----
  // * OK [CAPABILITY IMAP4rev1 SASL-IR AUTH=PLAIN AUTH=XOAUTH2 AUTH=OAUTHBEARER ID MOVE NAMESPACE XYMHIGHESTMODSEQ UIDPLUS LITERAL+ CHILDREN X-MSG-EXT OBJECTID] IMAP4rev1 Hello
  // ----IMAP REQUEST----
  // aaab AUTHENTICATE XOAUTH2 
  // ----IMAP RESPONSE----
  // aaab OK AUTHENTICATE completed
  // ----IMAP REQUEST----
  // aaac LIST "" "*"
  // ----IMAP RESPONSE----
  // * LIST (\Archive \HasNoChildren) "/" "Archive"
  // * LIST (\Junk \HasNoChildren) "/" "Bulk Mail"
  // * LIST (\Drafts \HasNoChildren) "/" "Draft"
  // * LIST (\HasChildren) "/" "Inbox"
  // * LIST (\HasNoChildren) "/" "Inbox/emailsWithAttach"
  // * LIST (\HasNoChildren) "/" "Inbox/test"
  // * LIST (\Sent \HasNoChildren) "/" "Sent"
  // * LIST (\Trash \HasNoChildren) "/" "Trash"
  // aaac OK LIST completed

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