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

List Yahoo Mail IMAP Mailboxes

See more Yahoo Mail Examples

List Yahoo Mail mailboxes.

Chilkat React Native Downloads

React Native
import { Imap, JsonObject, Mailboxes } from '@chilkat/react-native'

async function chilkatExample() {
  // 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"
  // }

  const json = new JsonObject();
  try {
    json.loadFile('qa_data/tokens/yahooMail.json');
  } catch {
    console.log('Failed to load Yahoo Mail access token file.');
    return;
  }

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

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

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

  // Connect to the Yahoo IMAP server.
  try {
    await imap.connectAsync('imap.mail.yahoo.com');
  } catch {
    console.log(imap.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 {
    await imap.loginAsync('user@yahoo.com', accessToken);
    console.log('Successfully authenticated with Yahoo IMAP using XOAUTH2!');
  } catch {
    console.log(imap.lastErrorText);
  }

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

  const mboxes = new Mailboxes();
  try {
    await imap.mbxListAsync(subscribed, refName, wildcardedMailbox, mboxes);
  } catch {
    console.log(imap.lastErrorText);
    return;
  }

  let i = 0;
  while (i < mboxes.count) {
    console.log(mboxes.getName(i));
    i++;
  }

  // Sample output looks like this:

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

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