msg:header

March 26, 2020 Contributors

Name

msg:header — Manipulate message headers

Synopsis

require('msys.extended.message')

msg:header(hdr, value, mode)

hdr: string
value: string (optional)
mode: string (optional)

Warning

This Lua function may not give expected results for multi-part MIME messages such as an MCMT message. It will behave as expected in the first MIME part. Consider using msgpart:header.

Description

This function may be used to manipulate message headers in a variety of ways: get, set, delete, prepend, append, and replace.

In order to get headers, pass only the first parameter and msg:header returns an array of header values. The headers will have RFC2047 header encoding removed, which means that any non-ASCII characters that are properly encoded according to MIME will be translated to UTF-8 text.

When used to delete a header, specify the name of the header you wish to delete and pass an empty string, "", as the second parameter.

If mode is replace (or omitted) then the following occurs: first all other headers of that name are deleted and then the new value is appended to the message headers. If mode is prepend, existing headers are preserved with the same name and the new value is prepended to the message. If the mode is append, existing headers are preserved with the same name and the new value is appended to the message. If the value is a table, multiple headers are added. When setting headers, any non-ASCII content will be subject to RFC2047 MIME header encoding, and stored in the header as UTF-8 encoded text.

local header_list;
header_list =  msg:header("X-Custom-Header");
local hdrval = header_list[1];

Note that when getting a header, the return value is a table.

msg:header("X-Custom-Header", "");

In this case, the return value of the msg:header function is a boolean.

msg:header("X-Custom-Header", "header value");

When adding a header, the third parameter defaults to append. If you wish to prepend the header specify prepend as the third parameter. In this case, the return value of the msg:header function is a boolean.

msg:header("X-Custom-Header", "123456", "replace");

In this case the return value of the msg:header function is also a boolean.

See Also

msg:body and msgpart:header.