Zig Requires Chilkat v11.0.0+
Zig
List Yahoo Mail IMAP Mailboxes
See more Yahoo Mail Examples
List Yahoo Mail mailboxes.Chilkat Zig Downloads
const std = @import("std");
const chilkat = @import("chilkat");
pub fn main(init: std.process.Init) !void {
const alloc = init.arena.allocator();
var success: bool = false;
// 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 = try chilkat.JsonObject.init();
defer json.deinit();
success = if (json.loadFile("qa_data/tokens/yahooMail.json")) true else |_| false;
if (!success) {
std.debug.print("Failed to load Yahoo Mail access token file.\n", .{});
return;
}
const access_token = try json.stringOf(alloc, "access_token");
// Do OAuth2 authentication by using the access token as the password in the Login method below...
const imap = try chilkat.Imap.init();
defer imap.deinit();
imap.setSsl(true);
imap.setPort(993);
// Connect to the Yahoo IMAP server.
success = if (imap.connect("imap.mail.yahoo.com")) true else |_| false;
if (!success) {
std.debug.print("{s}\n", .{try imap.getLastErrorText(alloc)});
return;
}
// Indicate that XOAUTH2 authentication is to be used:
imap.setAuthMethod("XOAUTH2");
// Login
// Use the email address of the Yahoo Mail account that granted authorization.
success = if (imap.login("user@yahoo.com", access_token)) true else |_| false;
if (!success) {
std.debug.print("{s}\n", .{try imap.getLastErrorText(alloc)});
} else {
std.debug.print("Successfully authenticated with Yahoo IMAP using XOAUTH2!\n", .{});
}
// Get the list of mailboxes.
const ref_name = "";
const wildcarded_mailbox = "*";
const subscribed = false;
const mboxes = try chilkat.Mailboxes.init();
defer mboxes.deinit();
imap.mbxList(subscribed, ref_name, wildcarded_mailbox, mboxes) catch {
std.debug.print("{s}\n", .{try imap.getLastErrorText(alloc)});
return;
};
var i: i32 = 0;
while (i < mboxes.getCount()) {
std.debug.print("{s}\n", .{try mboxes.getName(alloc, i)});
i = i + 1;
}
// Sample output looks like this:
// Archive
// Bulk Mail
// Draft
// Inbox
// Inbox/emailsWithAttach
// Inbox/test
// Sent
// Trash
// Disconnect from the IMAP server.
success = if (imap.disconnect()) true else |_| false;
}