File: rmailmm.el.html

Essentially based on the design of Alexander Pohoyda's MIME extensions (mime-display.el and mime.el).

This file provides two operation modes for viewing a MIME message.

(1) When rmail-enable-mime is non-nil (now it is the default), the
function rmail-show-mime is automatically called. That function shows a MIME message directly in RMAIL's view buffer.

(2) When rmail-enable-mime is nil, the command 'v' (or M-x
rmail-mime) shows a MIME message in a new buffer "*RMAIL*".

Both operations share the intermediate functions rmail-mime-process and rmail-mime-process-multipart as below.

rmail-show-mime
  +- rmail-mime-parse
  | +- rmail-mime-process <--+------------+
  | | +---------+ |
  | + rmail-mime-process-multipart --+
  |
  + rmail-mime-insert <----------------+
      +- rmail-mime-insert-text |
      +- rmail-mime-insert-bulk |
      +- rmail-mime-insert-multipart --+

rmail-mime
 +- rmail-mime-show <----------------------------------+
      +- rmail-mime-process |
           +- rmail-mime-handle |
                +- rmail-mime-text-handler |
                +- rmail-mime-bulk-handler |
                | + rmail-mime-insert-bulk
                +- rmail-mime-multipart-handler |
                     +- rmail-mime-process-multipart --+

In addition, for the case of rmail-enable-mime being non-nil, this file provides two functions rmail-insert-mime-forwarded-message and rmail-insert-mime-resent-message for composing forwarded and resent messages respectively.

Todo:

Make rmail-mime-media-type-handlers-alist usable in the first operation mode. Handle multipart/alternative in the second operation mode. Offer the option to call external/internal viewers (doc-view, xpdf, etc).

Defined variables (13)

rmail-mime-attachment-dirs-alistDefault directories to save attachments of various types into.
rmail-mime-coding-systemThe first coding-system used for decoding a MIME entity.
rmail-mime-mbox-bufferBuffer containing the mbox data.
rmail-mime-media-type-handlers-alistFunctions to handle various content types.
rmail-mime-mode-abbrev-tableAbbrev table for ‘rmail-mime-mode’.
rmail-mime-mode-hookHook run after entering RMIME mode.
rmail-mime-mode-mapKeymap for ‘rmail-mime-mode’.
rmail-mime-mode-syntax-tableSyntax table for ‘rmail-mime-mode’.
rmail-mime-prefer-htmlIf non-nil, default to showing HTML part rather than text part
rmail-mime-render-html-functionFunction to convert HTML to text.
rmail-mime-searchingBound to T inside ‘rmail-search-mime-message’ to suppress expensive
rmail-mime-show-imagesWhat to do with image attachments that Emacs is capable of displaying.
rmail-mime-view-bufferBuffer showing a message.

Defined functions (74)

rmail-insert-mime-forwarded-message(FORWARD-BUFFER)
rmail-insert-mime-resent-message(FORWARD-BUFFER)
rmail-mime(&optional ARG STATE)
rmail-mime--copy-display(ARG)
rmail-mime--make-display(HEADER TAGLINE BODY)
rmail-mime--make-display--cmacro(CL-WHOLE-ARG HEADER TAGLINE BODY)
rmail-mime-bulk-handler(CONTENT-TYPE CONTENT-DISPOSITION CONTENT-TRANSFER-ENCODING)
rmail-mime-display-body(CL-X)
rmail-mime-display-body--cmacro(CL-WHOLE-ARG CL-X)
rmail-mime-display-header(CL-X)
rmail-mime-display-header--cmacro(CL-WHOLE-ARG CL-X)
rmail-mime-display-p(CL-X)
rmail-mime-display-p--cmacro(CL-WHOLE-ARG CL-X)
rmail-mime-display-tagline(CL-X)
rmail-mime-display-tagline--cmacro(CL-WHOLE-ARG CL-X)
rmail-mime-entity(TYPE DISPOSITION TRANSFER-ENCODING DISPLAY HEADER TAGLINE BODY CHILDREN HANDLER &optional TRUNCATED)
rmail-mime-entity--cmacro(CL-WHOLE-ARG TYPE DISPOSITION TRANSFER-ENCODING DISPLAY HEADER TAGLINE BODY CHILDREN HANDLER &optional TRUNCATED)
rmail-mime-entity-body(CL-X)
rmail-mime-entity-body--cmacro(CL-WHOLE-ARG CL-X)
rmail-mime-entity-children(CL-X)
rmail-mime-entity-children--cmacro(CL-WHOLE-ARG CL-X)
rmail-mime-entity-display(CL-X)
rmail-mime-entity-display--cmacro(CL-WHOLE-ARG CL-X)
rmail-mime-entity-disposition(CL-X)
rmail-mime-entity-disposition--cmacro(CL-WHOLE-ARG CL-X)
rmail-mime-entity-handler(CL-X)
rmail-mime-entity-handler--cmacro(CL-WHOLE-ARG CL-X)
rmail-mime-entity-header(CL-X)
rmail-mime-entity-header--cmacro(CL-WHOLE-ARG CL-X)
rmail-mime-entity-p(CL-X)
rmail-mime-entity-p--cmacro(CL-WHOLE-ARG CL-X)
rmail-mime-entity-segment(POS &optional ENTITY)
rmail-mime-entity-set-truncated(ENTITY TRUNCATED)
rmail-mime-entity-tagline(CL-X)
rmail-mime-entity-tagline--cmacro(CL-WHOLE-ARG CL-X)
rmail-mime-entity-transfer-encoding(CL-X)
rmail-mime-entity-transfer-encoding--cmacro(CL-WHOLE-ARG CL-X)
rmail-mime-entity-truncated(CL-X)
rmail-mime-entity-truncated--cmacro(CL-WHOLE-ARG CL-X)
rmail-mime-entity-type(CL-X)
rmail-mime-entity-type--cmacro(CL-WHOLE-ARG CL-X)
rmail-mime-find-header-encoding(HEADER)
rmail-mime-fix-inserted-faces(START)
rmail-mime-handle(CONTENT-TYPE CONTENT-DISPOSITION CONTENT-TRANSFER-ENCODING)
rmail-mime-hidden-mode(ENTITY)
rmail-mime-insert(ENTITY)
rmail-mime-insert-bulk(ENTITY)
rmail-mime-insert-decoded-text(ENTITY)
rmail-mime-insert-header(HEADER)
rmail-mime-insert-html(ENTITY)
rmail-mime-insert-image(ENTITY)
rmail-mime-insert-multipart(ENTITY)
rmail-mime-insert-tagline(ENTITY &rest ITEM-LIST)
rmail-mime-insert-text(ENTITY)
rmail-mime-mode()
rmail-mime-multipart-handler(CONTENT-TYPE CONTENT-DISPOSITION CONTENT-TRANSFER-ENCODING)
rmail-mime-parse()
rmail-mime-process(SHOW-HEADERS PARSE-TAG &optional DEFAULT-CONTENT-TYPE DEFAULT-CONTENT-DISPOSITION)
rmail-mime-process-multipart(CONTENT-TYPE CONTENT-DISPOSITION CONTENT-TRANSFER-ENCODING PARSE-TAG)
rmail-mime-raw-mode(ENTITY)
rmail-mime-render-html-lynx(SOURCE-BUFFER)
rmail-mime-render-html-shr(SOURCE-BUFFER)
rmail-mime-save(BUTTON)
rmail-mime-set-bulk-data(ENTITY)
rmail-mime-show(&optional SHOW-HEADERS)
rmail-mime-shown-mode(ENTITY)
rmail-mime-text-handler(CONTENT-TYPE CONTENT-DISPOSITION CONTENT-TRANSFER-ENCODING)
rmail-mime-toggle-button(BUTTON)
rmail-mime-toggle-hidden()
rmail-mime-toggle-raw(&optional STATE)
rmail-mime-update-tagline(ENTITY)
rmail-mm-get-boundary-error-message(MESSAGE TYPE DISPOSITION ENCODING)
rmail-search-mime-message(MSG REGEXP)
rmail-show-mime()

Defined faces (0)