Next: , Previous: Viewing Attachments, Up: Reading Mail

6.3 HTML

MH-E can display messages that have been sent in HTML1. The content of the message will appear in the MH-Show buffer as you would expect if the entire message is HTML, or there is an inline HTML body part. However, if there is an HTML body part that is an attachment, then you'll see a button like this:

     [1. text/html; foo.html]...

To see how to read the contents of this body part, see Viewing Attachments.

The browser that MH-E uses is determined by the option mm-text-html-renderer. The default setting is set automatically based upon the presence of a known browser on your system. If you wish to use a different browser, then set this option accordingly. See the documentation for the browser you use for additional information on how to use it. In particular, find and disable the option to render images as this can tip off spammers that the email address they have used is valid.

If you're confused about which mm-text-html-renderer to use, here's a brief description of each, sorted by popularity, that includes the results of a quick poll of MH-E users from 2005-12-23.

w3m’ 7
The ‘w3m’ browser requires an external program. It's quick, produces pretty nice output, and best of all, it's the only browser that highlights links. These can be clicked with Mouse-2 to view the content of the link in ‘w3m’. The ‘w3m’ browser handles tables well and actually respects the table's width parameter (which can cause text to wrap if the author didn't anticipate that the page would be viewed in Emacs).
w3m-standalone’ 3
This browser, along with ‘nil’ for the external browser, are the only choices that work without having to download a separate lisp package or external program. This browser is quick, but does not show links. It handles simple tables but some tables get rendered much wider than the Emacs frame. This browser was the only one not to handle the escape ‘–’ (it printed a ‘?’), but it did render ‘®’.
links’ 1
The ‘links’ browser requires an external program. It's quick, and produces nicer output than ‘lynx’ on single column mails in tables. However, it doesn't show links and it doesn't do as nice a job on multi-column tables as some lines wrap. At least it fits in 80 columns and thus seems better than ‘w3’ and ‘w3m-standalone’. Converts escapes such as ‘®’ to (R).
lynx’ 1
The ‘lynx’ browser requires an external program. It's quick and produces pretty decent output but it doesn't show links. It doesn't seem to do multi-column tables which makes output much cleaner. It centers the output and wraps long lines more than most. Handles ‘®’.
nil’ 1
This choice obviously requires an external browser. Like ‘w3m-standalone’, it works out of the box. With this setting, HTML messages have a button for the body part which you can view with K v (mh-folder-toggle-mime-part).
w3’ 0
This choice does not require an external program as all of the rendering is done in lisp. You do need to get the package separately. This browser is slow, and doesn't appear to have been updated since 2001 and the author hasn't responded to my emails. It displays unknown tags instead of hiding them, so you get to see all the Microsoft crap in certain messages. Tends to make multi-column tables wider than even a full-screen Emacs can handle. Like ‘w3m’, you can follow links, but you have to find them first as they are not highlighted. Performs well on single-column tables and handles escapes such as ‘®’.
html2text’ 0
The ‘html2text’ browser requires an external program. I noticed that it can do some nasty things with simple HTML mails (like filling the entire message as if it were one paragraph, including signature). On another message, it displayed half of the HTML tags for some reason.

For a couple more sources of information about mm-text-html-renderer, see section Display Customization in the The Emacs MIME Manual and the documentation for the Gnus command W h (see section Article Washing in the The Gnus Manual).

A useful key binding that you can add to ~/.emacs is the following which displays an HTML link or textual URL in an external browser when clicked with S-mouse-2. This binding works in any buffer, including HTML buffers.

     (global-set-key [S-mouse-2] 'browse-url-at-mouse)


[1] This feature depends on a version of Gnus that is at least 5.10.