The MML language is very simple. It looks a bit like an SGML application, but it’s not.
The main concept of MML is the part. Each part can be of a different type or use a different charset. The way to delineate a part is with a ‘<#part ...>’ tag. Multipart parts can be introduced with the ‘<#multipart ...>’ tag. Parts are ended by the ‘<#/part>’ or ‘<#/multipart>’ tags. Parts started with the ‘<#part ...>’ tags are also closed by the next open tag.
There’s also the ‘<#external ...>’ tag. These introduce ‘external/message-body’ parts.
Each tag can contain zero or more parameters on the form ‘parameter=value’. The values may be enclosed in quotation marks, but that’s not necessary unless the value contains white space. So ‘filename=/home/user/#hello$^yes’ is perfectly valid.
The following parameters have meaning in MML; parameters that have no meaning are ignored. The MML parameter names are the same as the MIME parameter names; the things in the parentheses say which header it will be used in.
The MIME type of the part (
Use the contents of the file in the body of the part
The contents of the body of the part are to be encoded in the character
set specified (
Content-Type). See Charset Translation.
Might be used to suggest a file name if the part is to be saved
to a file (
Valid values are ‘inline’ and ‘attachment’
Valid values are ‘7bit’, ‘8bit’, ‘quoted-printable’ and
Content-Transfer-Encoding). See Charset Translation.
A description of the part (
RFC822 date when the part was created (
RFC822 date when the part was modified (
RFC822 date when the part was read (
Who to encrypt/sign the part to. This field is used to override any auto-detection based on the To/CC headers.
Identity used to sign the part. This field is used to override the default key used.
The size (in octets) of the part (
What technology to sign this MML part with (
What technology to encrypt this MML part with (
Parameters for ‘text/plain’:
Formatting parameter for the text, valid values include ‘fixed’ (the default) and ‘flowed’. Normally you do not specify this manually, since it requires the textual body to be formatted in a special way described in RFC 2646. See Flowed text.
Parameters for ‘application/octet-stream’:
Type of the part; informal—meant for human readers
Parameters for ‘message/external-body’:
A word indicating the supported access mechanism by which the file may
be obtained. Values include ‘ftp’, ‘anon-ftp’, ‘tftp’,
‘localfile’, and ‘mailserver’. (
The RFC822 date after which the file may no longer be fetched.
The size (in octets) of the file. (
Valid values are ‘read’ and ‘read-write’
Parameters for ‘sign=smime’:
File containing key and certificate for signer.
Parameters for ‘encrypt=smime’:
File containing certificate for recipient.