Sample code for 30+ languages & platforms
Zig

SMTP Send Raw Command

Demonstrates how to send a raw command to the SMTP server after the connecting and authenticating.

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", .{});

    // Send the "EHLO" command again to get the multi-line response that includes the SMTP capabilities.
    // The capabilities are the lines in the response that begin with "250-".
    const response_str = mailman.smtpSendRawCommand(alloc, "EHLO client.example.com", "utf-8", false) catch {
        std.debug.print("{s}\n", .{try mailman.getLastErrorText(alloc)});
        return;
    };

    std.debug.print("{s}\n", .{response_str});

    // A sample response:

    // 250-smtp.us-west-2.mail.awsapps.com
    // 250-8BITMIME
    // 250-AUTH PLAIN LOGIN
    // 250 Ok
}