Zig
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
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", .{});
}