mail::Header::mime — A structured MIME header.


#include <libmail/headers.H>

mail::Header::mime content_type("Content-Type", "text/plain");

    content_type.parameters.set_simple("charset", "iso-8859-1");

mail::Header::mime content_disposition("Content-Disposition", "attachment")
                              ("filename", "document.doc")
                              ("name", "Monthly Sales", "iso-8859-1", "EN");

std::cout << content_type.toString();


This class creates a structured MIME header. A structured MIME header, like Content-Type or Content-Disposition contains a literal value, and zero or more name=setting parameters, separated by semicolons.

Two arguments are provided to the constructor, the header's name, and its literal value. After constructing, use the parameters member to set the parameters. This member has the following methods:

set_simple(std::string name, std::string value)

Set parameter name to value. value must contain US-ASCII text only.

set(std::string name, std::string value, std::string charset, std::string language)

Set parameter name to value. charset specifies value's character set. language is optional, and specifies value's language. value is converted to US-ASCII text according to RFC 2231.

erase(std::string name)

Remove parameter name.

The toString() returns the header as a single text string: name: value. Long headers are folded accordingly.

Dynamic parameter generation

Parameters can also be dynamically populated by repeatedly calling the ().

One version of the () operator receives the parameter name and value, and corresponds to the set_simple method. The second version also receives the character set and language information, and corresponds to the set function.