Sample code for 30+ languages & platforms
Zig

Add a Content-Length Header to MIME

See more MIME Examples

Demonstrates the Chilkat Mime.AddContentLength method, which computes the byte length of the entity's serialized body and adds or updates its Content-Length header. It takes no arguments and is a void method. The count is based on the transfer-encoded serialized body.

Note: The file path is relative to the application's current working directory. Absolute paths may also be used. Supply the path to your own file.

Background: Some protocols and consumers want a Content-Length declaring the body size up front. This computes it correctly from the encoded body — the bytes actually written — rather than the decoded content, and updates any existing header so it stays accurate. Call it after the body is final; if you change the body afterward, call it again, or remove the header, since a stale length is worse than none.

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 mime = try chilkat.Mime.init();
    defer mime.deinit();
    mime.loadMimeFile("qa_data/message.eml") catch {
        std.debug.print("{s}\n", .{try mime.getLastErrorText(alloc)});
        return;
    };

    // Compute the byte length of the entity's serialized body and add (or update) its Content-Length
    // header.  The count is based on the transfer-encoded serialized body.  It is a void method.
    mime.addContentLength();

    const content_length = mime.getHeaderField(alloc, "Content-Length") catch {
        std.debug.print("{s}\n", .{try mime.getLastErrorText(alloc)});
        return;
    };

    std.debug.print("Content-Length: {s}\n", .{content_length});
}