Sample code for 30+ languages & platforms
Zig

Create Email with Non-Standard Binary Body

Creates an email where the only body is a binary WAV file. The technique used in the example could be applied to other binary files, such as PDF, MS-WORD docs, Excel docs, etc.

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 mime = try chilkat.Mime.init();
    defer mime.deinit();

    mime.setBodyFromFile("VoiceMessage.wav") catch {
        std.debug.print("{s}\n", .{try mime.getLastErrorText(alloc)});
        return;
    };

    // The MIME has this header:
    // Content-Disposition: attachment;
    //      filename="VoiceMessage.wav"
    // Content-Transfer-Encoding: base64
    // Content-Type: audio/x-wav;
    //     name="VoiceMessage.wav"

    // We don't want the content-disposition to be an
    // attachment -- otherwise the email object will self-correct
    // and put it in a multipart/mixed format...
    mime.setDisposition("");
    mime.setFilename("");

    const str_mime = try mime.getMime(alloc);
    std.debug.print("{s}\n", .{str_mime});

    // Now load it into an email object:
    const email = try chilkat.Email.init();
    defer email.deinit();
    email.setFromMimeText(str_mime) catch {
        std.debug.print("{s}\n", .{try email.getLastErrorText(alloc)});
        return;
    };

    // Add subject, TO, FROM, etc.
    email.setSubject("This is a test");
    email.setFrom("support@chilkatsoft.com");
    try email.addTo("Matt", "matt@chilkatsoft.com");

    // Your email is ready to send.
    // (but for this example, we'll simply save it to a file...)
    email.saveEml("email.eml") catch {
        std.debug.print("{s}\n", .{try email.getLastErrorText(alloc)});
        return;
    };

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