emacs mime manual - emacs mime 1 emacs mime this manual documents the libraries used to compose and

Download Emacs MIME Manual - Emacs MIME 1 Emacs MIME This manual documents the libraries used to compose and

Post on 02-May-2020

0 views

Category:

Documents

0 download

Embed Size (px)

TRANSCRIPT

  • Emacs MIME Manual

    by Lars Magne Ingebrigtsen

  • This file documents the Emacs MIME interface functionality.

    Copyright c© 1998–2015 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, with the Front-Cover Texts being “A GNU Manual”, and with the Back-Cover Texts as in (a) below. A copy of the license is included in the section entitled “GNU Free Documentation License”.

    (a) The FSF’s Back-Cover Text is: “You have the freedom to copy and modify this GNU manual.”

  • i

    Table of Contents

    Emacs MIME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

    1 Decoding and Viewing . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.1 Dissection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.2 Non-MIME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.3 Handles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.4 Display . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.5 Display Customization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.6 Files and Directories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.7 New Viewers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

    2 Composing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.1 Simple MML Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.2 MML Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.3 Advanced MML Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.4 Encoding Customization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.5 Charset Translation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.6 Conversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.7 Flowed text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

    3 Interface Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

    4 Basic Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 4.1 rfc2045 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 4.2 rfc2231 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 4.3 ietf-drums . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 4.4 rfc2047 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 4.5 time-date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 4.6 qp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 4.7 base64 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 4.8 binhex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 4.9 uudecode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 4.10 yenc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 4.11 rfc1843 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 4.12 mailcap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

    5 Standards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

    6 GNU Free Documentation License . . . . . . . . . . . 31 ADDENDUM: How to use this License for your documents . . . . . . . . . 37

    7 Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

  • Emacs MIME 1

    Emacs MIME

    This manual documents the libraries used to compose and display MIME messages.

    This manual is directed at users who want to modify the behavior of the MIME encod- ing/decoding process or want a more detailed picture of how the Emacs MIME library works, and people who want to write functions and commands that manipulate MIME elements.

    MIME is short for Multipurpose Internet Mail Extensions. This standard is documented in a number of RFCs; mainly RFC2045 (Format of Internet Message Bodies), RFC2046 (Me- dia Types), RFC2047 (Message Header Extensions for Non-ASCII Text), RFC2048 (Regis- tration Procedures), RFC2049 (Conformance Criteria and Examples). It is highly recom- mended that anyone who intends writing MIME-compliant software read at least RFC2045 and RFC2047.

  • Chapter 1: Decoding and Viewing 3

    1 Decoding and Viewing

    This chapter deals with decoding and viewing MIME messages on a higher level.

    The main idea is to first analyze a MIME article, and then allow other programs to do things based on the list of handles that are returned as a result of this analysis.

    1.1 Dissection

    The mm-dissect-buffer is the function responsible for dissecting a MIME article. If given a multipart message, it will recursively descend the message, following the structure, and return a tree of MIME handles that describes the structure of the message.

    1.2 Non-MIME

    Gnus also understands some non-MIME attachments, such as postscript, uuencode, binhex, yenc, shar, forward, gnatsweb, pgp, diff. Each of these features can be disabled by add an item into mm-uu-configure-list. For example,

    (require ’mm-uu)

    (add-to-list ’mm-uu-configure-list ’(pgp-signed . disabled))

    postscript

    PostScript file.

    uu Uuencoded file.

    binhex Binhex encoded file.

    yenc Yenc encoded file.

    shar Shar archive file.

    forward Non-MIME forwarded message.

    gnatsweb Gnatsweb attachment.

    pgp-signed

    PGP signed clear text.

    pgp-encrypted

    PGP encrypted clear text.

    pgp-key PGP public keys.

    emacs-sources

    Emacs source code. This item works only in the groups matching mm-uu-emacs- sources-regexp.

    diff Patches. This is intended for groups where diffs of committed files are automat- ically sent to. It only works in groups matching mm-uu-diff-groups-regexp.

    verbatim-marks

    Slrn-style verbatim marks.

    LaTeX LaTeX documents. It only works in groups matching mm-uu-tex-groups- regexp.

  • 4 Emacs MIME Manual

    Some inlined non-MIME attachments are displayed using the face mm-uu-extract. By default, noMIME button for these parts is displayed. You can force displaying a button using K b (gnus-summary-display-buttonized) or add text/x-verbatim to gnus-buttonized- mime-types, See Section “MIME Commands” in Gnus Manual.

    1.3 Handles

    A MIME handle is a list that fully describes a MIME component.

    The following macros can be used to access elements in a handle:

    mm-handle-buffer

    Return the buffer that holds the contents of the undecoded MIME part.

    mm-handle-type

    Return the parsed Content-Type of the part.

    mm-handle-encoding

    Return the Content-Transfer-Encoding of the part.

    mm-handle-undisplayer

    Return the object that can be used to remove the displayed part (if it has been displayed).

    mm-handle-set-undisplayer

    Set the undisplayer object.

    mm-handle-disposition

    Return the parsed Content-Disposition of the part.

    mm-get-content-id

    Returns the handle(s) referred to by Content-ID.

    1.4 Display

    Functions for displaying, removing and saving.

    mm-display-part

    Display the part.

    mm-remove-part

    Remove the part (if it has been displayed).

    mm-inlinable-p

    Say whether a MIME type can be displayed inline.

    mm-automatic-display-p

    Say whether a MIME type should be displayed automatically.

    mm-destroy-part

    Free all resources occupied by a part.

    mm-save-part

    Offer to save the part in a file.

    mm-pipe-part

    Offer to pipe the part to some process.

  • Chapter 1: Decoding and Viewing 5

    mm-interactively-view-part

    Prompt for a mailcap method to use to view the part.

    1.5 Display Customization

    mm-inline-media-tests

    This is an alist where the key is a MIME type, the second element is a function to display the part inline (i.e., inside Emacs), and the third element is a form to be evaled to say whether the part can be displayed inline.

    This variable specifies whether a part can be displayed inline, and, if so, how to do it. It does not say whether parts are actually displayed inline.

    mm-inlined-types

    This, on the other hand, says what types are to be displayed inline, if they satisfy the conditions set by the variable above. It’s a list of MIME media types.

    mm-automatic-display