FormatFlowed

What is flowed text?

format=flowed is defined in RFC3676 and enables mail clients to support the distinction between physical and logical lines, while still supporting older clients.

The message is sent wrapped (to the 66th column if following RFC 3676’s suggestion), with newlines encoded with an extra space at the end of the previous line. Graphical clients can unwrap the message back to its original form, performing word-wrapping at window’s margins. Older clients can simply disregard newline information, and display the wrapped message.

The advantage of flowed text (if an entire conversation is handled with format=flowed) is the improved handling of text paragraphs (both quoted and unquoted), since each paragraph is a single logical line that gets re-wrapped by the client dynamically. Or that’s the theory, at least. In practice difficulties arise when mail clients don’t handle it correctly; for example, Gmail’s lack of support is covered here and here.

This format=flowed FAQ has a lot more helpful information.

Support for flowed text in emacs

Wanderlust

See WlFormatFlowed.

Gnus

See GnusFormatFlowed.

mu4e

This is covered in the mu4e FAQ.

Using emacs as the editor for an external MUA

This is still less well supported than with Gnus or Wanderlust, but there are still options, e.g.

Since it’s not trivial for a machine to reliably decide which paragraphs should be reflowed (or maybe not even possible without AI), the approach of hooking into fill-paragraph is maybe better, since then the user can review the reflowing prior to saving the buffer and sending the message.

use-hard-newlines

emacs has a MinorMode called use-hard-newlines which provides support for a related feature: the ability to distinguish between "hard" and "soft" newlines using TextProperties (also used by EnrichedMode). Lines separated by a soft newline can be reflowed to any width, whereas hard newlines always cause a linebreak. This feature is enabled via M-x use-hard-newlines.

Gnus couples this feature with format=flowed, so that its support for format=flowed is only enabled when use-hard-newlines is set - see GnusFormatFlowed for the details.

There is also a messages-are-flowing package (available from MELPA) which enables use-hard-newlines (thereby supporting format=flowed within Gnus) and more importantly provides visual indication of where hard newlines exist within a buffer. However it does not provide any extra support for format=flowed outside Gnus.

See also


CategoryMail