Sample code for 30+ languages & platforms
Zig

SMTP Connect and Authenticate

Demonstrates how to connect and then authenticate with an SMTP server.

Chilkat Zig Downloads

Zig
const std = @import("std");
const chilkat = @import("chilkat");

pub fn main(init: std.process.Init) !void {
    const alloc = init.arena.allocator();

    // This example requires the Chilkat API to have been previously unlocked.
    // See Global Unlock Sample for sample code.

    const mailman = try chilkat.MailMan.init();
    defer mailman.deinit();

    mailman.setSmtpHost("smtp.mail.us-west-2.awsapps.com");
    mailman.setSmtpSsl(true);
    mailman.setSmtpPort(465);

    mailman.smtpConnect() catch {
        std.debug.print("{s}\n", .{try mailman.getLastErrorText(alloc)});
        return;
    };

    mailman.setSmtpUsername("john@example.com");
    mailman.setSmtpPassword("the_password");

    mailman.smtpAuthenticate() catch {
        std.debug.print("{s}\n", .{try mailman.getLastErrorText(alloc)});
        return;
    };

    std.debug.print("Authenticated!\n", .{});

    std.debug.print("{s}\n", .{try mailman.getSmtpSessionLog(alloc)});

    // Sample session log:

    // 220 smtp.us-west-2.mail.awsapps.com ESMTP Amazon WorkMail SMTP Service
    // EHLO SLICE<CRLF>
    // 250-smtp.us-west-2.mail.awsapps.com
    // 250-8BITMIME
    // 250-AUTH PLAIN LOGIN
    // 250 Ok
    // AUTH LOGIN<CRLF>
    // 334 VXNlcm5hbWU6
    // am9obkBleGFtcGxlLmNvbQ==<CRLF>
    // 334 UGFzc3dvcmQ6
    // {PasswordOrCredentials}
    // 235 Authentication successful.
}