Method MIME.parse_headers()

Method parse_headers

array(mapping(string:string)|string) parse_headers(string message)
array(mapping(string:array(string))|string) parse_headers(string message, int(1..1) use_multiple)


This is a low level function that will separate the headers from the body of an encoded message. It will also translate the headers into a mapping. It will however not try to analyze the meaning of any particular header. This means that the body is returned as is, with any transfer-encoding intact.

It is possible to call this function with just the header part of a message, in which case an empty body will be returned.

The result is returned in the form of an array containing two elements. The first element is a mapping containing the headers found. The second element is a string containing the body.

Headers that occur multiple times will have their contents NUL separated, unless use_multiple has been specified, in which case the contents will be arrays.


Some headers (eg Subject) may include RFC 1522/RFC 2047 encoded words. To decode these, see decode_words_text and decode_words_tokenized and their friends.