Sample code for 30+ languages & platforms
Zig

Auto-Generate or Explicitly Specify the Message-ID Email Header

Demonstrates how to auto-generate or explicitly specify the Message-ID header field.

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();

    const email = try chilkat.Email.init();
    defer email.deinit();

    email.setSubject("test");
    email.setBody("test");
    email.addTo("Joe", "joe@example1.com") catch {};
    email.setFrom("mary@example2.com");

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

    // When the mailman sends email, it renders the email to be sent,
    // and then sends the rendered MIME.

    // Instead of actually sending the email, this example will render
    // to MIME so we can see what would be sent..

    // We can explicitly set the Message-ID like this:
    mailman.setAutoGenMessageId(false);
    email.addHeaderField("Message-ID", "<xyz123@abc>");

    var mime_str: [:0]const u8 = try mailman.renderToMime(alloc, email);
    std.debug.print("{s}\n", .{mime_str});

    // This is what we get:

    // MIME-Version: 1.0
    // Date: Mon, 20 Jul 2020 17:20:09 -0500
    // Message-ID: <xyz123@abc>
    // Content-Type: text/plain; charset=us-ascii; format=flowed
    // Content-Transfer-Encoding: 7bit
    // X-Priority: 3 (Normal)
    // Subject: test
    // To: Joe <joe@example1.com>
    // From: mary@example2.com
    //
    // test

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

    // If we auto-generate...
    mailman.setAutoGenMessageId(true);
    mime_str = try mailman.renderToMime(alloc, email);
    std.debug.print("{s}\n", .{mime_str});

    // We get this:

    // MIME-Version: 1.0
    // Date: Mon, 20 Jul 2020 17:21:20 -0500
    // Message-ID: <04EDE096BBFE484967F6398A973B0FCF6EA09A44@CHILKATSLICE>
    // Content-Type: text/plain; charset=us-ascii; format=flowed
    // Content-Transfer-Encoding: 7bit
    // X-Priority: 3 (Normal)
    // Subject: test
    // To: Joe <joe@example1.com>
    // From: mary@example2.com
    //
    // test
}