NAME
mh-mime - overview of nmh MIME message composition and display
DESCRIPTION
The acronym MIME stands for Multipurpose Internet Mail Extensions, the format of Internet messages used to send multi-media content. The nmh command suite has support for the display and composition of MIME messages, but currently MIME support is not completely integrated into all tools. This document provides an overview as to which tools support MIME message display, storage, and composition.
Local
Character Set Conversion
All of the nmh commands convert non-native character
sets to the local character set, as specified by the
operating system locale settings. See locale(1) for
more details on the environment variables used to set the
local character set. Character set conversion will only take
place if nmh was built with iconv(3) support.
See mhparam(1) for how to determine whether your
nmh installation includes iconv(3)
support.
Depending on the source and target character set, it may not be possible to convert all characters to the local character set. In this case a substitution character will be used for the characters that cannot be converted.
Message
Display
The default format used by scan(1) will automatically
decode MIME-encoded headers. If you have a custom
scan format, see the examples provided with the
nmh distribution (found in the
“/etc/nmh” directory) and
mh-format(5) for details on how to make sure your
MIME headers are properly decoded.
By default, if show detects that it is reading a MIME message it will invoke mhshow(1). The default behavior of mhshow is to only display text parts that are not marked as attachments. See mhshow(1) for details on how to control what mhshow will display.
Message
Interrogation and Storage
The mhlist(1) command will display a listing of the
MIME parts contained within a message. That information can
be used in conjunction with the mhstore command to
save individual parts or content types of a message. See
mhlist(1) and mhstore(1) for more details on
how these commands work.
Message
Composition and Reply
All messages sent by send(1) will automatically be
processed by mhbuild(1) before being passed to
post(1) for message submission. mhbuild will
use the locale settings to mark text content with the
appropriate character set and apply any necessary encoding.
If you wish to include text in your message using a
character set that does not match your locale, you will need
to specify the character set using an mhbuild
directive; see mhbuild(1) for more information.
For attaching files or composing other non-text content, there are two options: the attach system and mhbuild directives.
The attach system is best suited for content where one or more files are being attached to a message. You can use the attach system by either using the attach command at the “What now?” prompt, or by inserting an “Attach:” header in the message draft containing the name of the file you wish to attach to the message (note that all the attach command does is place an “Attach:” header in the message draft). mhbuild will then automatically include the specified file(s) in the outgoing message. See send(1) for details on how mhbuild determines the proper content type of attached files.
The other method of composing MIME messages is to use mhbuild directives. This allows exact control over the contents and format of the MIME message, but has a more complicated syntax. mhbuild(1) contains details on the directive syntax and examples of directives for different media types. It is important to note that when using mhbuild directives the user must run mhbuild outside of send to have it process directives; when being run by send, mhbuild is configured to not process directives so normal user text is not mistaken for a directive. When using directives a user typically uses the mime command at the “What now?” prompt to process them.
When replying to messages using repl(1) the traditional MH method of including the original text in the reply does not interoperate with MIME messages. The -convertargs switch to repl(1) provides one solution. Another solution: the contrib directory (/usr/share/doc/nmh/contrib) contains a Perl program called replyfilter which will decode text parts and present them in an appropriate manner to be included in a message reply. See the comments at the top of replyfilter for instructions on how to configure nmh to work with it.
Message
Rewrite
The mhfixmsg(1) command can apply various
transformations to MIME messages, including decoding of text
parts, converting the character set of text parts, and
insertion of text/plain parts to correspond to text parts of
other subtypes. mhfixmsg can also repair defects in
MIME messages, such as mismatched top-level boundary
indicators and invalid Content-Transfer-Encoding values.
SEE ALSO
comp(1),
iconv(3), mh-format(5), mhbuild(1),
mhfixmsg(1), mhparam(1), nmh(7),
repl(1), whatnow(1),
/usr/share/doc/nmh/contrib/replyfilter,
/usr/share/doc/nmh/contrib/replaliases
BUGS
MIME support should be more integrated into all of the nmh tools than it currently is.