Sample code for 30+ languages & platforms
Zig

Enumerate the Header Fields of an Email

See more Email Object Examples

Demonstrates the read-only Chilkat Email.NumHeaderFields property together with GetHeaderFieldName and GetHeaderFieldValue to enumerate every header field. Indexing is zero-based, so fields run from 0 to NumHeaderFields - 1. Repeated header fields (a field name that appears more than once) are counted separately. This example builds a small email and prints each header field.

Background: A header field is a single Name: value line at the top of a MIME message. The same field name can legitimately appear multiple times — for example, a message can carry several Received lines, one added by each mail server it passed through. That is why enumerating by index (rather than looking up by name) matters: it lets you see every occurrence in the order it appears.

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 read-only Email.NumHeaderFields property and enumerating each
    // header field by zero-based index using GetHeaderFieldName and GetHeaderFieldValue.

    const email = try chilkat.Email.init();
    defer email.deinit();
    email.setSubject("Header field enumeration");
    email.setFrom("mary@example.com");
    email.addTo("Joe", "joe@example.com") catch {};

    const n = email.getNumHeaderFields();
    std.debug.print("NumHeaderFields = {d}\n", .{n});

    var i: i32 = 0;
    i = 0;
    while (i < n) : (i += 1) {
        std.debug.print("{s}: {s}\n", .{ try email.getHeaderFieldName(alloc, i), try email.getHeaderFieldValue(alloc, i) });
    }
}