4 .TH MHSHOW %manext1% "%nmhdate%" MH.6.8 [%nmhversion%]
6 mhshow \- display MIME messages
29 command display contents of a MIME (multi-media)
30 message or collection of messages.
33 manipulates multi-media messages as specified in
34 RFC\-2045 thru RFC\-2049. Currently
37 encodings in message bodies, and does not support the encoding of
38 message headers as specified in RFC\-2047.
42 will display all parts of a multipart
50 to particular subparts (of a
51 multipart content) and/or particular content types.
58 to use the specified file as
59 the source message, rather than a message from a folder. If you specify
60 this file as \*(lq-\*(rq, then
62 will accept the source message
63 on the standard input. Note that the file, or input from standard input
64 should be a validly formatted message, just like any other
68 be in mail drop format (to convert a file in
69 mail drop format to a folder of
74 A part specification consists of a series of numbers separated by dots.
75 For example, in a multipart content containing three parts, these
76 would be named as 1, 2, and 3, respectively. If part 2 was also a
77 multipart content containing two parts, these would be named as 2.1 and
78 2.2, respectively. Note that the
80 switch is effective for only
81 messages containing a multipart content. If a message has some other
82 kind of content, or if the part is itself another multipart content, the
84 switch will not prevent the content from being acted upon.
86 A content specification consists of a content type and a subtype.
87 The initial list of \*(lqstandard\*(rq content types and subtypes can
88 be found in RFC\-2046.
90 A list of commonly used contents is briefly reproduced here:
98 multipart mixed, alternative, digest, parallel
99 message rfc822, partial, external-body
100 application octet-stream, postscript
107 A legal MIME message must contain a subtype specification.
109 To specify a content, regardless of its subtype, just use the
110 name of the content, e.g., \*(lqaudio\*(rq. To specify a specific
111 subtype, separate the two with a slash, e.g., \*(lqaudio/basic\*(rq.
112 Note that regardless of the values given to the `\-type' switch, a
113 multipart content (of any subtype listed above) is always acted upon.
114 .SS "Unseen Sequence"
115 If the profile entry \*(lqUnseen\-Sequence\*(rq is present and
118 will remove each of the messages shown
119 from each sequence named by the profile entry.
120 .SS "Showing the Contents"
121 The headers of each message are displayed with
123 using the standard format file
125 You may specify an alternate format file with the
128 switch. If the format file
130 is specified, then the display
131 of the message headers is suppressed.
133 Next, the contents are extracted from the message and are stored in
134 a temporary file. Usually, the name of the temporary file is the
135 word \*(lqmhshow\*(rq followed by a string of characters. Occasionally,
136 the method used to display a content (described next), requires that
137 the file end in a specific suffix. For example, the
139 command (part of the StarOffice package) can be used to display
140 Microsoft Word content, but it uses the suffix to determine how to display
141 the file. If no suffix is present, the file is not correctly loaded.
142 Similarily, older versions of the
144 command append a \*(lq.ps\*(rq suffix to
145 the filename if one was missing. As a result, these cannot be used to read
146 the default temporary file.
148 To get around this, your profile can contain lines of the forms:
152 mhshow-suffix-<type>/<subtype>: <suffix>
153 mhshow-suffix-<type>: <suffix>
157 to specify a suffix which can be automatically added to the temporary
158 file created for a specific content type. For example, the following
159 lines might appear in your profile:
163 mhshow-suffix-text: .txt
164 mhshow-suffix-application/msword: .doc
165 mhshow-suffix-application/PostScript: .ps
169 to automatically append a suffix to the temporary files.
171 The method used to display the different contents in the messages bodies
172 will be determined by a \*(lqdisplay string\*(rq. To find the display
175 will first search your profile for an entry of the form:
178 mhshow-show-<type>/<subtype>
181 to determine the display string. If this isn't found,
183 will search for an entry of the form:
189 to determine the display string.
191 If a display string is found, any escapes (given below) will be expanded.
192 The result will be executed under
193 \*(lq/bin/sh\*(rq, with the standard input
196 The display string may contain the following escapes:
201 %l Display listing prior to displaying content
202 %f Insert filename containing content
203 %F %f, but stdin is terminal not content
204 %a Insert parameters from Content-Type field
205 %s Insert content subtype
206 %c Insert foreign charset
207 %d Insert content description
213 processes the MIME parts serially, i.e. the next display process
214 is executed after the previous one has terminated.
218 is display a content, typing QUIT (usually
219 control-\\) will tell
221 to wrap things up immediately.
223 Note that if the content being displayed is multipart, but not one of
224 the subtypes listed above, then the f- and F-escapes expand to multiple
225 filenames, one for each subordinate content. Further, stdin is not
226 redirected from the terminal to the content.
228 If a display string is not found,
230 has the following default values:
234 mhshow-show-text/plain: %liconv -f <source-charset>
235 mhshow-show-message/rfc822: %lshow \-file %F
239 If a subtype of type text doesn't have a profile entry, it will be
240 treated as text/plain.
243 has default methods for handling multipart messages of subtype
244 mixed, alternative, parallel, and digest. Any unknown subtype of type
245 multipart (without a profile entry), will be treated as multipart/mixed.
247 If none of these apply, then
251 Example entries might be:
255 mhshow-show-audio/basic: raw2audio 2>/dev/null | play
256 mhshow-show-image: xv %f
257 mhshow-show-application/PostScript: lpr -Pps
261 When expanding %f and %F escapes, the file names get wrapped in
262 single-quotes automatically.
266 will process each message serially \- it won't start
267 showing the next message until all the commands executed to display the
268 current message have terminated. Although a multipart content may
269 contain advice to display the parts in parallel,
272 .SS "Showing Alternate Character Sets"
273 Because a content of type text might be in a non-ASCII character
276 encounters a \*(lqcharset\*(rq parameter for
277 this content, it checks if your terminal can display this character
280 checks this by first examining the the environment
283 and if not set, taking the character encoding of the current locale.
285 If the character set of text/plain cannot be displayed natively, then
286 the default display method converts the content automatically by
290 iconv -f '<foreign-charset>'
293 Note that if you have a custom `mhshow-show-*' display string, you
294 need to care yourself for converting the encodings.
295 (The foreign charset is available through the %c escape.)
299 needs to be available.
301 `mhshow-charset-*' profile entries are not supported anymore.
302 .SS "Messages of Type message/partial"
304 cannot directly display messages of type partial.
305 You must reassemble them first into a normal message using
307 Check the man page for
310 .SS "External Access"
312 does not automatically retrieve message/external-body parts (anymore),
313 but prints the relevant information to enable the user to retrieve
315 .SS "User Environment"
316 Because the display environment in which
318 operates may vary for
321 will look for the environment variable
323 If present, this specifies the name of an additional
324 user profile which should be read. Hence, when a user logs in on a
325 particular display device, this environment variable should be set to
326 refer to a file containing definitions useful for the given display device.
327 Normally, only entries that deal with the methods to display different
328 content type and subtypes
332 mhshow-show-<type>/<subtype>
337 need be present in this additional profile. Finally,
339 will attempt to consult one other additional user profile,
343 %etcdir%/mhn.defaults
346 which is created automatically during
353 .ta \w'%etcdir%/ExtraBigFileName 'u
354 ^$HOME/.mmh/profile~^The user profile
355 ^$MHSHOW~^Additional profile entries
356 ^%etcdir%/mhn.defaults~^System default MIME profile entries
357 ^%etcdir%/mhl.headers~^The headers template
360 .SH "PROFILE COMPONENTS"
364 .ta \w'ExtraBigProfileName 'u
365 ^Path:~^To determine the user's mail storage
366 ^Current\-Folder:~^To find the default current folder
367 ^Unseen\-Sequence:~^To name sequences denoting unseen messages
368 ^mhshow-show-<type>*~^Template for displaying contents
369 ^Pager:~^Default program to display text/plain content
373 mhbuild(1), mhl(1), mhlist(1), mhstore(1), sendfiles(1)
377 .RB ` +folder "' defaults to the current folder"
378 .RB ` msgs "' defaults to cur"
379 .RB ` \-form \ mhl.headers'
384 If a folder is given, it will become the current folder. The last
385 message selected will become the current message.