------------------------
There is a standard message format used for transmitting messages. This is the format that $mail_editor:make_message produces, and that :receive_message verbs on players and $mail_recipients expect to see. The (currently experimental) @refile and @copym commands also use this format to transfer messages.
This *transmission* format is distinct from the *storage* format, though, for convenience this same format is often used as well for storing messages in player collections and ordinary $mail_recipient children though, in general, there is no requirement that this be the case.
A transmitted message is a list in the following form
date (number),
the time() value at the time the message was sent.
from (string),
the sending object (address list form)
if this is not a player, an additional header will indicate the
current ownership of the object.
to (string),
recipients (address list form) which can either be players
or $mail_recipient descendents.
subject (string),
subject of the message, or " " if there is no subject,
@additional optional headers (list of strings),
each header has the form "
is padded out to a width of 10 columns for the convenience of
:display_message. Currently "Reply-to:
additional header in use,
"",
@body of message (list of strings)
Note that the from, to and subject lines do *not* include a header name like "From:", "To:", or "Subject:". The @'s indicate that the lists in question get spliced in (as usual), thus the entire message is a list whose first element is a number and the rest are strings.
The address lists that appear in the from and to lines is a string in the form a sequence of object ids, each enclosed in parentheses and preceded by optional text, e.g.,
"*Core-DB-Issues (#8175), Rog (#4292), and Haakon (#2)"
The text is intended to give the current name of each object for the benefit of human readers, but is actually ignored by all header parsing routines. The convention is that the text is either a player name or a * followed by a mailing list name.