Sample code for 30+ languages & platforms
Zig

Attach a File to an Email

See more Email Object Examples

Demonstrates the Chilkat Email.AddFileAttachment method, which attaches a file read from the filesystem. It returns the content type Chilkat assigned to the attachment (inferred from the file extension). This example attaches a PDF and prints its detected content type.

Background: Each attachment carries a Content-Type (MIME type) such as application/pdf or image/png that tells the receiving client how to handle it. Chilkat gets this from the file's extension. Because attachment bytes are binary, they are Base64-encoded for transport, which is handled automatically — you simply point AddFileAttachment at a path and the file is read, encoded, and packaged into the message.

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

    // Demonstrates the AddFileAttachment method, which attaches a file read from the
    // filesystem.  It returns the content type Chilkat assigned to the attachment (based on
    // the file extension), or returns failure if the file could not be read.

    const email = try chilkat.Email.init();
    defer email.deinit();
    email.setSubject("Email with a file attachment");
    email.setBody("Please see the attached file.");

    // Attach a file.  The return value is the auto-detected content type.
    const content_type = email.addFileAttachment(alloc, "qa_data/attachments/report.pdf") catch {
        std.debug.print("{s}\n", .{try email.getLastErrorText(alloc)});
        return;
    };

    std.debug.print("Attached content type = {s}\n", .{content_type});
    std.debug.print("NumAttachments = {d}\n", .{email.getNumAttachments()});

    // Note: The path "qa_data/attachments/report.pdf" is a relative local filesystem path,
    // relative to the current working directory of the running application.
}