annotate man/emacs-mime.texi @ 38212:6b14cc47a4f2

Major rewrite. Sections Tags, Emerge, Change Log and Authors moved to maintaining.texi. Some sections reordered. Node Misc for Programs moved to just before the language-specific sections. New node Defuns contains an intro plus the old Defuns node (now renamed Moving by Defuns) as well as Imenu, Which Function, and a node Left Margin Paren to explain the convention about this. New node Parentheses now documents M-x check-parens. It contains subnodes Expressions, Moving by Parens, and Matching. Expressions and Moving by Parens contain the material formerly in Lists and List Commands, but divided up differently. The section Balanced Editing has been deleted. Most of the C indentation customization (all except c-set-style), has been replaced with a reference to the C Modes manual. Documentation now is divided into three subsections. Some rewrites in the Program Indent section about C-u TAB and C-M-q.
author Richard M. Stallman <rms@gnu.org>
date Tue, 26 Jun 2001 13:43:32 +0000
parents 0a6114a81c71
children 62e02f5ae533
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
32085
56bb657c0878 Add coding tag. Fix 7-bit mangling.
Dave Love <fx@gnu.org>
parents: 32008
diff changeset
1 \input texinfo @c -*-mode: texinfo; coding: latin-1 -*-
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
2
32008
a0a62e1e3675 Fix the @setfilename directive.
Eli Zaretskii <eliz@gnu.org>
parents: 31855
diff changeset
3 @setfilename ../info/emacs-mime
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
4 @settitle Emacs MIME Manual
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
5 @synindex fn cp
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
6 @synindex vr cp
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
7 @synindex pg cp
33671
90acc0606378 Change @dircategory.
Dave Love <fx@gnu.org>
parents: 33435
diff changeset
8 @dircategory Emacs
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
9 @direntry
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
10 * Emacs MIME: (emacs-mime). The MIME de/composition library.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
11 @end direntry
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
12 @iftex
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
13 @finalout
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
14 @end iftex
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
15 @setchapternewpage odd
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
16
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
17 @ifnottex
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
18
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
19 This file documents the Emacs MIME interface functionality.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
20
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
21 Copyright (C) 1998,99,2000 Free Software Foundation, Inc.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
22
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
23 Permission is granted to copy, distribute and/or modify this document
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
24 under the terms of the GNU Free Documentation License, Version 1.1 or
32258
43e6b74b0852 Fix missing @ends.
Dave Love <fx@gnu.org>
parents: 32250
diff changeset
25 any later version published by the Free Software Foundation; with no
43e6b74b0852 Fix missing @ends.
Dave Love <fx@gnu.org>
parents: 32250
diff changeset
26 Invariant Sections, with the Front-Cover texts being ``A GNU
36152
0a6114a81c71 Minor changes.
Richard M. Stallman <rms@gnu.org>
parents: 35620
diff changeset
27 Manual,'' and with the Back-Cover Texts as in (a) below. A copy of the
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
28 license is included in the section entitled ``GNU Free Documentation
32248
086aff3bf8ca Modify licence notice. QP, base64 changes.
Dave Love <fx@gnu.org>
parents: 32085
diff changeset
29 License'' in the Emacs manual.
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
30
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
31 (a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
32 this GNU Manual, like GNU software. Copies published by the Free
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
33 Software Foundation raise funds for GNU development.''
32248
086aff3bf8ca Modify licence notice. QP, base64 changes.
Dave Love <fx@gnu.org>
parents: 32085
diff changeset
34
086aff3bf8ca Modify licence notice. QP, base64 changes.
Dave Love <fx@gnu.org>
parents: 32085
diff changeset
35 This document is part of a collection distributed under the GNU Free
086aff3bf8ca Modify licence notice. QP, base64 changes.
Dave Love <fx@gnu.org>
parents: 32085
diff changeset
36 Documentation License. If you want to distribute this document
086aff3bf8ca Modify licence notice. QP, base64 changes.
Dave Love <fx@gnu.org>
parents: 32085
diff changeset
37 separately from the collection, you can do so by adding a copy of the
086aff3bf8ca Modify licence notice. QP, base64 changes.
Dave Love <fx@gnu.org>
parents: 32085
diff changeset
38 license to the document, as described in section 6 of the license.
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
39 @end ifnottex
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
40
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
41 @tex
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
42
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
43 @titlepage
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
44 @title Emacs MIME Manual
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
45
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
46 @author by Lars Magne Ingebrigtsen
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
47 @page
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
48
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
49 @vskip 0pt plus 1filll
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
50 Copyright @copyright{} 1998,99,2000 Free Software Foundation, Inc.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
51
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
52 Permission is granted to copy, distribute and/or modify this document
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
53 under the terms of the GNU Free Documentation License, Version 1.1 or
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
54 any later version published by the Free Software Foundation; with the
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
55 Invariant Sections being none, with the Front-Cover texts being ``A GNU
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
56 Manual'', and with the Back-Cover Texts as in (a) below. A copy of the
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
57 license is included in the section entitled ``GNU Free Documentation
32250
949f454d6d76 Fix last.
Dave Love <fx@gnu.org>
parents: 32248
diff changeset
58 License'' in the Emacs manual.
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
59
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
60 (a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
61 this GNU Manual, like GNU software. Copies published by the Free
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
62 Software Foundation raise funds for GNU development.''
32250
949f454d6d76 Fix last.
Dave Love <fx@gnu.org>
parents: 32248
diff changeset
63
949f454d6d76 Fix last.
Dave Love <fx@gnu.org>
parents: 32248
diff changeset
64 This document is part of a collection distributed under the GNU Free
949f454d6d76 Fix last.
Dave Love <fx@gnu.org>
parents: 32248
diff changeset
65 Documentation License. If you want to distribute this document
949f454d6d76 Fix last.
Dave Love <fx@gnu.org>
parents: 32248
diff changeset
66 separately from the collection, you can do so by adding a copy of the
949f454d6d76 Fix last.
Dave Love <fx@gnu.org>
parents: 32248
diff changeset
67 license to the document, as described in section 6 of the license.
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
68 @end titlepage
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
69 @page
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
70
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
71 @end tex
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
72
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
73 @node Top
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
74 @top Emacs MIME
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
75
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
76 This manual documents the libraries used to compose and display
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
77 @sc{mime} messages.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
78
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
79 This is not a manual meant for users; it's a manual directed at people
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
80 who want to write functions and commands that manipulate @sc{mime}
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
81 elements.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
82
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
83 @sc{mime} is short for @dfn{Multipurpose Internet Mail Extensions}.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
84 This standard is documented in a number of RFCs; mainly RFC2045 (Format
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
85 of Internet Message Bodies), RFC2046 (Media Types), RFC2047 (Message
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
86 Header Extensions for Non-ASCII Text), RFC2048 (Registration
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
87 Procedures), RFC2049 (Conformance Criteria and Examples). It is highly
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
88 recommended that anyone who intends writing @sc{mime}-compliant software
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
89 read at least RFC2045 and RFC2047.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
90
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
91 @menu
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
92 * Interface Functions:: An abstraction over the basic functions.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
93 * Basic Functions:: Utility and basic parsing functions.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
94 * Decoding and Viewing:: A framework for decoding and viewing.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
95 * Composing:: MML; a language for describing MIME parts.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
96 * Standards:: A summary of RFCs and working documents used.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
97 * Index:: Function and variable index.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
98 @end menu
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
99
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
100
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
101 @node Interface Functions
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
102 @chapter Interface Functions
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
103 @cindex interface functions
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
104 @cindex mail-parse
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
105
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
106 The @code{mail-parse} library is an abstraction over the actual
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
107 low-level libraries that are described in the next chapter.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
108
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
109 Standards change, and so programs have to change to fit in the new
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
110 mold. For instance, RFC2045 describes a syntax for the
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
111 @code{Content-Type} header that only allows @sc{ascii} characters in the
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
112 parameter list. RFC2231 expands on RFC2045 syntax to provide a scheme
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
113 for continuation headers and non-@sc{ascii} characters.
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
114
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
115 The traditional way to deal with this is just to update the library
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
116 functions to parse the new syntax. However, this is sometimes the wrong
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
117 thing to do. In some instances it may be vital to be able to understand
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
118 both the old syntax as well as the new syntax, and if there is only one
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
119 library, one must choose between the old version of the library and the
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
120 new version of the library.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
121
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
122 The Emacs MIME library takes a different tack. It defines a series of
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
123 low-level libraries (@file{rfc2047.el}, @file{rfc2231.el} and so on)
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
124 that parses strictly according to the corresponding standard. However,
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
125 normal programs would not use the functions provided by these libraries
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
126 directly, but instead use the functions provided by the
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
127 @code{mail-parse} library. The functions in this library are just
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
128 aliases to the corresponding functions in the latest low-level
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
129 libraries. Using this scheme, programs get a consistent interface they
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
130 can use, and library developers are free to create write code that
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
131 handles new standards.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
132
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
133 The following functions are defined by this library:
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
134
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
135 @defun mail-header-parse-content-type string
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
136 Parse @var{string}, a @code{Content-Type} header, and return a
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
137 content-type list in the following format:
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
138
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
139 @lisp
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
140 ("type/subtype"
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
141 (attribute1 . value1)
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
142 (attribute2 . value2)
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
143 @dots{})
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
144 @end lisp
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
145
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
146 Here's an example:
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
147
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
148 @example
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
149 (mail-header-parse-content-type
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
150 "image/gif; name=\"b980912.gif\"")
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
151 @result{} ("image/gif" (name . "b980912.gif"))
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
152 @end example
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
153 @end defun
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
154
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
155 @defun mail-header-parse-content-disposition string
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
156 Parse @var{string}, a @code{Content-Disposition} header, and return a
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
157 content-type list in the format above.
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
158 @end defun
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
159
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
160 @defun mail-content-type-get ct attribute
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
161 @findex mail-content-type-get
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
162 Returns the value of the given @var{attribute} from the content-type
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
163 list @var{ct}.
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
164
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
165 @example
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
166 (mail-content-type-get
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
167 '("image/gif" (name . "b980912.gif")) 'name)
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
168 @result{} "b980912.gif"
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
169 @end example
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
170 @end defun
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
171
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
172 @defun mail-header-encode-parameter param value
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
173 Takes a parameter string @samp{@var{param}=@var{value}} and returns an
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
174 encoded version of it. This is used for parameters in headers like
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
175 @samp{Content-Type} and @samp{Content-Disposition}.
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
176 @end defun
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
177
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
178 @defun mail-header-remove-comments string
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
179 Return a comment-free version of @var{string}.
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
180
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
181 @example
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
182 (mail-header-remove-comments
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
183 "Gnus/5.070027 (Pterodactyl Gnus v0.27) (Finnish Landrace)")
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
184 @result{} "Gnus/5.070027 "
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
185 @end example
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
186 @end defun
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
187
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
188 @defun mail-header-remove-whitespace string
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
189 Remove linear white space from @var{string}. Space inside quoted
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
190 strings and comments is preserved.
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
191
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
192 @example
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
193 (mail-header-remove-whitespace
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
194 "image/gif; name=\"Name with spaces\"")
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
195 @result{} "image/gif;name=\"Name with spaces\""
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
196 @end example
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
197 @end defun
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
198
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
199 @defun mail-header-get-comment string
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
200 Return the last comment in @var{string}.
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
201
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
202 @example
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
203 (mail-header-get-comment
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
204 "Gnus/5.070027 (Pterodactyl Gnus v0.27) (Finnish Landrace)")
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
205 @result{} "Finnish Landrace"
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
206 @end example
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
207 @end defun
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
208
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
209
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
210 @defun mail-header-parse-address string
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
211 Parse an address string @var{string} and return a list containing the
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
212 mailbox and the plaintext name.
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
213
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
214 @example
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
215 (mail-header-parse-address
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
216 "Hrvoje Niksic <hniksic@@srce.hr>")
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
217 @result{} ("hniksic@@srce.hr" . "Hrvoje Niksic")
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
218 @end example
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
219 @end defun
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
220
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
221 @defun mail-header-parse-addresses string
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
222 Parse @var{string} as a list of addresses and return a list of elements
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
223 like the one described above.
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
224
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
225 @example
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
226 (mail-header-parse-addresses
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
227 "Hrvoje Niksic <hniksic@@srce.hr>, Steinar Bang <sb@@metis.no>")
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
228 @result{} (("hniksic@@srce.hr" . "Hrvoje Niksic")
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
229 ("sb@@metis.no" . "Steinar Bang"))
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
230 @end example
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
231 @end defun
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
232
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
233 @defun mail-header-parse-date string
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
234 Parse a date @var{string} and return an Emacs time structure.
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
235 @end defun
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
236
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
237 @defun mail-narrow-to-head
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
238 Narrow the buffer to the header section of the buffer. Point is placed
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
239 at the beginning of the narrowed buffer.
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
240 @end defun
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
241
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
242 @defun mail-header-narrow-to-field
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
243 Narrow the buffer to the header under point.
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
244 @end defun
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
245
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
246 @defun mail-encode-encoded-word-region start end
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
247 Encode the non-@sc{ascii} words in the region @var{start}to @var{end}. For
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
248 instance, @samp{Naïve} is encoded as @samp{=?iso-8859-1?q?Na=EFve?=}.
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
249 @end defun
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
250
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
251 @defun mail-encode-encoded-word-buffer
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
252 Encode the non-@sc{ascii} words in the current buffer. This function is
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
253 meant to be called with the buffer narrowed to the headers of a message.
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
254 @end defun
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
255
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
256 @defun mail-encode-encoded-word-string string
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
257 Encode the words that need encoding in @var{string}, and return the
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
258 result.
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
259
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
260 @example
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
261 (mail-encode-encoded-word-string
32085
56bb657c0878 Add coding tag. Fix 7-bit mangling.
Dave Love <fx@gnu.org>
parents: 32008
diff changeset
262 "This is naïve, baby")
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
263 @result{} "This is =?iso-8859-1?q?na=EFve,?= baby"
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
264 @end example
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
265 @end defun
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
266
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
267 @defun mail-decode-encoded-word-region start end
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
268 Decode the encoded words in the region @var{start}to @var{end}.
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
269 @end defun
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
270
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
271 @defun mail-decode-encoded-word-string string
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
272 Decode the encoded words in @var{string} and return the result.
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
273
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
274 @example
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
275 (mail-decode-encoded-word-string
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
276 "This is =?iso-8859-1?q?na=EFve,?= baby")
32085
56bb657c0878 Add coding tag. Fix 7-bit mangling.
Dave Love <fx@gnu.org>
parents: 32008
diff changeset
277 @result{} "This is naïve, baby"
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
278 @end example
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
279 @end defun
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
280
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
281 Currently, @code{mail-parse} is an abstraction over @code{ietf-drums},
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
282 @code{rfc2047}, @code{rfc2045} and @code{rfc2231}. These are documented
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
283 in the subsequent sections.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
284
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
285
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
286
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
287 @node Basic Functions
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
288 @chapter Basic Functions
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
289
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
290 This chapter describes the basic, ground-level functions for parsing and
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
291 handling. Covered here is parsing @code{From} lines, removing comments
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
292 from header lines, decoding encoded words, parsing date headers and so
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
293 on. High-level functionality is dealt with in the next chapter
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
294 (@pxref{Decoding and Viewing}).
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
295
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
296 @menu
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
297 * rfc2045:: Encoding @code{Content-Type} headers.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
298 * rfc2231:: Parsing @code{Content-Type} headers.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
299 * ietf-drums:: Handling mail headers defined by RFC822bis.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
300 * rfc2047:: En/decoding encoded words in headers.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
301 * time-date:: Functions for parsing dates and manipulating time.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
302 * qp:: Quoted-Printable en/decoding.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
303 * base64:: Base64 en/decoding.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
304 * binhex:: Binhex decoding.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
305 * uudecode:: Uuencode decoding.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
306 * rfc1843:: Decoding HZ-encoded text.
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
307 * mailcap:: How parts are displayed is specified by mailcap files
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
308 @end menu
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
309
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
310
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
311 @node rfc2045
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
312 @section rfc2045
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
313
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
314 RFC2045 is the ``main'' @sc{mime} document, and as such, one would
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
315 imagine that there would be a lot to implement. But there isn't, since
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
316 most of the implementation details are delegated to the subsequent
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
317 RFCs.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
318
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
319 So @file{rfc2045.el} has only a single function:
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
320
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
321 @defun rfc2045-encode-string parameter value
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
322 @findex rfc2045-encode-string
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
323 Takes a @var{parameter} and a @var{value} and returns a
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
324 @samp{@var{param}=@var{value}} string. @var{value} will be quoted if
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
325 there are non-safe characters in it.
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
326 @end defun
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
327
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
328
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
329 @node rfc2231
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
330 @section rfc2231
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
331
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
332 RFC2231 defines a syntax for the @samp{Content-Type} and
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
333 @samp{Content-Disposition} headers. Its snappy name is @dfn{MIME
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
334 Parameter Value and Encoded Word Extensions: Character Sets, Languages,
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
335 and Continuations}.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
336
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
337 In short, these headers look something like this:
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
338
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
339 @example
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
340 Content-Type: application/x-stuff;
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
341 title*0*=us-ascii'en'This%20is%20even%20more%20;
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
342 title*1*=%2A%2A%2Afun%2A%2A%2A%20;
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
343 title*2="isn't it!"
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
344 @end example
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
345
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
346 They usually aren't this bad, though.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
347
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
348 The following functions are defined by this library:
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
349
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
350 @defun rfc2231-parse-string string
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
351 Parse a @samp{Content-Type} header @var{string} and return a list
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
352 describing its elements.
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
353
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
354 @example
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
355 (rfc2231-parse-string
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
356 "application/x-stuff;
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
357 title*0*=us-ascii'en'This%20is%20even%20more%20;
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
358 title*1*=%2A%2A%2Afun%2A%2A%2A%20;
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
359 title*2=\"isn't it!\"")
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
360 @result{} ("application/x-stuff"
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
361 (title . "This is even more ***fun*** isn't it!"))
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
362 @end example
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
363 @end defun
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
364
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
365 @defun rfc2231-get-value ct attribute
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
366 Takes a list @var{ct} of the format above and returns the value of the
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
367 specified @var{attribute}.
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
368 @end defun
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
369
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
370 @defun rfc2231-encode-string parameter value
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
371 Encode the string @samp{@var{parameter}=@var{value}} for inclusion in
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
372 headers likes @samp{Content-Type} and @samp{Content-Disposition}.
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
373 @end defun
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
374
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
375 @node ietf-drums
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
376 @section ietf-drums
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
377
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
378 @dfn{drums} is an IETF working group that is working on the replacement
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
379 for RFC822.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
380
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
381 The functions provided by this library include:
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
382
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
383 @defun ietf-drums-remove-comments string
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
384 Remove the comments from @var{string} and return the result.
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
385 @end defun
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
386
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
387 @defun ietf-drums-remove-whitespace string
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
388 Remove linear white space from @var{string} and return the result.
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
389 Spaces inside quoted strings and comments are left untouched.
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
390 @end defun
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
391
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
392 @defun ietf-drums-get-comment string
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
393 Return the last most comment from @var{string}.
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
394 @end defun
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
395
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
396 @defun ietf-drums-parse-address string
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
397 Parse an address @var{string} and return a list of the mailbox and the
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
398 plain text name.
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
399 @end defun
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
400
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
401 @defun ietf-drums-parse-addresses string
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
402 Parse @var{string}, containing any number of comma-separated addresses,
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
403 and return a list of mailbox/plain text pairs.
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
404 @end defun
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
405
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
406 @defun ietf-drums-parse-date string
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
407 Parse the date @var{string} and return an Emacs time structure.
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
408 @end defun
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
409
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
410 @defun ietf-drums-narrow-to-header
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
411 Narrow the buffer to the header section of the current buffer.
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
412 @end defun
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
413
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
414
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
415 @node rfc2047
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
416 @section rfc2047
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
417
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
418 RFC2047 (Message Header Extensions for Non-ASCII Text) specifies how
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
419 non-@sc{ascii} text in headers are to be encoded. This is actually rather
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
420 complicated, so a number of variables are necessary to tweak what this
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
421 library does.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
422
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
423 The following variables are tweakable:
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
424
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
425 @defvar rfc2047-default-charset
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
426 Characters in this charset should not be decoded by this library.
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
427 This defaults to @samp{iso-8859-1}.
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
428 @end defvar
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
429
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
430 @defvar rfc2047-header-encoding-list
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
431 This is an alist of header / encoding-type pairs. Its main purpose is
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
432 to prevent encoding of certain headers.
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
433 @end defvar
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
434
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
435 The keys can either be header regexps, or @code{t}.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
436
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
437 The values can be either @code{nil}, in which case the header(s) in
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
438 question won't be encoded, or @code{mime}, which means that they will be
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
439 encoded.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
440
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
441 @defvar rfc2047-charset-encoding-alist
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
442 RFC2047 specifies two forms of encoding---@code{Q} (a
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
443 Quoted-Printable-like encoding) and @code{B} (base64). This alist
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
444 specifies which charset should use which encoding.
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
445 @end defvar
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
446
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
447 @defvar rfc2047-encoding-function-alist
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
448 This is an alist of encoding / function pairs. The encodings are
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
449 @code{Q}, @code{B} and @code{nil}.
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
450 @end defvar
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
451
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
452 @defvar rfc2047-q-encoding-alist
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
453 The @code{Q} encoding isn't quite the same for all headers. Some
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
454 headers allow a narrower range of characters, and that is what this
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
455 variable is for. It's an alist of header regexps and allowable character
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
456 ranges.
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
457 @end defvar
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
458
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
459 @defvar rfc2047-encoded-word-regexp
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
460 When decoding words, this library looks for matches to this regexp.
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
461 @end defvar
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
462
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
463 Those were the variables, and these are the functions:
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
464
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
465 @defun rfc2047-narrow-to-field
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
466 Narrow the buffer to the header on the current line.
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
467 @end defun
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
468
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
469 @defun rfc2047-encode-message-header
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
470 Should be called narrowed to the header of a message. Encodes according
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
471 to @code{rfc2047-header-encoding-alist}.
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
472 @end defun
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
473
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
474 @defun rfc2047-encode-region start end
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
475 Encodes all encodable words in the region @var{start} to @var{end}.
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
476 @end defun
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
477
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
478 @defun rfc2047-encode-string string
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
479 Encode @var{string} and return the result.
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
480 @end defun
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
481
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
482 @defun rfc2047-decode-region start end
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
483 Decode the encoded words in the region @var{start} to @var{end}.
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
484 @end defun
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
485
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
486 @defun rfc2047-decode-string string
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
487 Decode @var{string} and return the result.
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
488 @end defun
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
489
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
490
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
491
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
492 @node time-date
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
493 @section time-date
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
494
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
495 While not really a part of the @sc{mime} library, it is convenient to
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
496 document this library here. It deals with parsing @samp{Date} headers
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
497 and manipulating time. (Not by using tesseracts, though, I'm sorry to
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
498 say.)
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
499
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
500 These functions convert between five formats: a date string, an Emacs
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
501 time structure, a decoded time list, a number of seconds, and a day number.
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
502
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
503 The functions have quite self-explanatory names, so the following just
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
504 gives an overview of which functions are available.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
505
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
506 @findex parse-time-string
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
507 @findex date-to-time
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
508 @findex time-to-seconds
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
509 @findex seconds-to-time
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
510 @findex time-to-day
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
511 @findex days-to-time
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
512 @findex time-since
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
513 @findex time-less-p
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
514 @findex subtract-time
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
515 @findex days-between
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
516 @findex date-leap-year-p
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
517 @findex time-to-day-in-year
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
518 @example
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
519 (parse-time-string "Sat Sep 12 12:21:54 1998 +0200")
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
520 @result{} (54 21 12 12 9 1998 6 nil 7200)
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
521
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
522 (date-to-time "Sat Sep 12 12:21:54 1998 +0200")
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
523 @result{} (13818 19266)
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
524
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
525 (time-to-seconds '(13818 19266))
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
526 @result{} 905595714.0
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
527
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
528 (seconds-to-time 905595714.0)
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
529 @result{} (13818 19266 0)
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
530
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
531 (time-to-day '(13818 19266))
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
532 @result{} 729644
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
533
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
534 (days-to-time 729644)
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
535 @result{} (961933 65536)
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
536
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
537 (time-since '(13818 19266))
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
538 @result{} (0 430)
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
539
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
540 (time-less-p '(13818 19266) '(13818 19145))
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
541 @result{} nil
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
542
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
543 (subtract-time '(13818 19266) '(13818 19145))
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
544 @result{} (0 121)
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
545
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
546 (days-between "Sat Sep 12 12:21:54 1998 +0200"
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
547 "Sat Sep 07 12:21:54 1998 +0200")
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
548 @result{} 5
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
549
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
550 (date-leap-year-p 2000)
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
551 @result{} t
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
552
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
553 (time-to-day-in-year '(13818 19266))
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
554 @result{} 255
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
555 @end example
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
556
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
557 @findex safe-date-to-time
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
558 And finally, we have @code{safe-date-to-time}, which does the same as
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
559 @code{date-to-time}, but returns a zero time if the date is
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
560 syntactically malformed.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
561
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
562
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
563
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
564 @node qp
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
565 @section qp
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
566
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
567 This library deals with decoding and encoding Quoted-Printable text.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
568
32248
086aff3bf8ca Modify licence notice. QP, base64 changes.
Dave Love <fx@gnu.org>
parents: 32085
diff changeset
569 Very briefly explained, QP encoding means translating all 8-bit
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
570 characters (and lots of control characters) into things that look like
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
571 @samp{=EF}; that is, an equal sign followed by the byte encoded as a hex
32248
086aff3bf8ca Modify licence notice. QP, base64 changes.
Dave Love <fx@gnu.org>
parents: 32085
diff changeset
572 string. It is defined in RFC 2045.
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
573
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
574 The following functions are defined by the library:
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
575
32248
086aff3bf8ca Modify licence notice. QP, base64 changes.
Dave Love <fx@gnu.org>
parents: 32085
diff changeset
576 @deffn Command quoted-printable-decode-region @var{from} @var{to} &optional @var{coding-system}
35523
8a1b48ccaa0e QP tweaks
Dave Love <fx@gnu.org>
parents: 33671
diff changeset
577 QP-decode all the encoded text in the region. If @var{coding-system}
8a1b48ccaa0e QP tweaks
Dave Love <fx@gnu.org>
parents: 33671
diff changeset
578 is non-nil, decode bytes into characters with that coding-system. It
8a1b48ccaa0e QP tweaks
Dave Love <fx@gnu.org>
parents: 33671
diff changeset
579 is probably better not to use @var{coding-system}; instead decode into
8a1b48ccaa0e QP tweaks
Dave Love <fx@gnu.org>
parents: 33671
diff changeset
580 a unibyte buffer, decode that appropriately and then interpret it as
8a1b48ccaa0e QP tweaks
Dave Love <fx@gnu.org>
parents: 33671
diff changeset
581 multibyte.
32258
43e6b74b0852 Fix missing @ends.
Dave Love <fx@gnu.org>
parents: 32250
diff changeset
582 @end deffn
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
583
32248
086aff3bf8ca Modify licence notice. QP, base64 changes.
Dave Love <fx@gnu.org>
parents: 32085
diff changeset
584 @defun quoted-printable-decode-string @var{string} &optional @var{coding-system}
086aff3bf8ca Modify licence notice. QP, base64 changes.
Dave Love <fx@gnu.org>
parents: 32085
diff changeset
585 Return a QP-encoded copy of @var{string}. If @var{coding-system} is
086aff3bf8ca Modify licence notice. QP, base64 changes.
Dave Love <fx@gnu.org>
parents: 32085
diff changeset
586 non-nil, decode bytes into characters with that coding-system.
32258
43e6b74b0852 Fix missing @ends.
Dave Love <fx@gnu.org>
parents: 32250
diff changeset
587 @end defun
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
588
32248
086aff3bf8ca Modify licence notice. QP, base64 changes.
Dave Love <fx@gnu.org>
parents: 32085
diff changeset
589 @deffn Command quoted-printable-encode-region @var{from} @var{to} &optional @var{fold} @var{class}
35523
8a1b48ccaa0e QP tweaks
Dave Love <fx@gnu.org>
parents: 33671
diff changeset
590 QP-encode all the region. If @var{fold} is non-@var{nil}, fold lines
8a1b48ccaa0e QP tweaks
Dave Love <fx@gnu.org>
parents: 33671
diff changeset
591 at 76 characters, as required by the RFC. If @var{class} is
35620
654bde0f95a6 *** empty log message ***
Dave Love <fx@gnu.org>
parents: 35523
diff changeset
592 non-@code{nil}, translate the characters not matched by that regexp
654bde0f95a6 *** empty log message ***
Dave Love <fx@gnu.org>
parents: 35523
diff changeset
593 class, which should be in the form expected by
654bde0f95a6 *** empty log message ***
Dave Love <fx@gnu.org>
parents: 35523
diff changeset
594 @var{skip-chars-forward} and should probably not contain literal
654bde0f95a6 *** empty log message ***
Dave Love <fx@gnu.org>
parents: 35523
diff changeset
595 eight-bit characters. Specifying @var{class} makes sense to do extra
654bde0f95a6 *** empty log message ***
Dave Love <fx@gnu.org>
parents: 35523
diff changeset
596 encoding in header fields.
35523
8a1b48ccaa0e QP tweaks
Dave Love <fx@gnu.org>
parents: 33671
diff changeset
597
8a1b48ccaa0e QP tweaks
Dave Love <fx@gnu.org>
parents: 33671
diff changeset
598 If variable @var{mm-use-ultra-safe-encoding} is defined and
8a1b48ccaa0e QP tweaks
Dave Love <fx@gnu.org>
parents: 33671
diff changeset
599 non-@code{nil}, fold lines unconditionally and encode @samp{From } and
8a1b48ccaa0e QP tweaks
Dave Love <fx@gnu.org>
parents: 33671
diff changeset
600 @samp{-} at the start of lines..
32258
43e6b74b0852 Fix missing @ends.
Dave Love <fx@gnu.org>
parents: 32250
diff changeset
601 @end deffn
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
602
32248
086aff3bf8ca Modify licence notice. QP, base64 changes.
Dave Love <fx@gnu.org>
parents: 32085
diff changeset
603 @defun quoted-printable-encode-string string
086aff3bf8ca Modify licence notice. QP, base64 changes.
Dave Love <fx@gnu.org>
parents: 32085
diff changeset
604 Return a QP-encoded copy of @var{string}.
32258
43e6b74b0852 Fix missing @ends.
Dave Love <fx@gnu.org>
parents: 32250
diff changeset
605 @end defun
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
606
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
607 @node base64
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
608 @section base64
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
609 @cindex base64
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
610
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
611 Base64 is an encoding that encodes three bytes into four characters,
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
612 thereby increasing the size by about 33%. The alphabet used for
32248
086aff3bf8ca Modify licence notice. QP, base64 changes.
Dave Love <fx@gnu.org>
parents: 32085
diff changeset
613 encoding is very resistant to mangling during transit. @xref{Base
086aff3bf8ca Modify licence notice. QP, base64 changes.
Dave Love <fx@gnu.org>
parents: 32085
diff changeset
614 64,,Base 64 Encoding, elisp, The Emacs Lisp Reference Manual}.
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
615
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
616 @node binhex
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
617 @section binhex
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
618 @cindex binhex
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
619 @cindex Apple
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
620 @cindex Macintosh
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
621
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
622 Binhex is an encoding that originated in Macintosh environments.
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
623 The following function is supplied to deal with these:
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
624
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
625 @defun binhex-decode-region start end &optional header-only
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
626 Decode the encoded text in the region @var{start} to @var{end}. If
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
627 @var{header-only} is non-@code{nil}, only decode the @samp{binhex}
36152
0a6114a81c71 Minor changes.
Richard M. Stallman <rms@gnu.org>
parents: 35620
diff changeset
628 header and return the file name.
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
629 @end defun
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
630
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
631
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
632 @node uudecode
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
633 @section uudecode
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
634 @cindex uuencode
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
635 @cindex uudecode
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
636
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
637 Uuencoding is probably still the most popular encoding of binaries
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
638 used on Usenet, although Base64 rules the mail world.
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
639
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
640 The following function is supplied by this package:
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
641
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
642 @defun uudecode-decode-region start end &optional file-name
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
643 Decode the text in the region @var{start} to @var{end}. If
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
644 @var{file-name} is non-@code{nil}, save the result to @var{file-name}.
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
645 @end defun
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
646
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
647
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
648 @node rfc1843
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
649 @section rfc1843
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
650 @cindex rfc1843
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
651 @cindex HZ
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
652 @cindex Chinese
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
653
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
654 RFC1843 deals with mixing Chinese and @sc{ascii} characters in messages. In
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
655 essence, RFC1843 switches between @sc{ascii} and Chinese by doing this:
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
656
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
657 @example
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
658 This sentence is in ASCII.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
659 The next sentence is in GB.~@{<:Ky2;S@{#,NpJ)l6HK!#~@}Bye.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
660 @end example
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
661
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
662 Simple enough, and widely used in China.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
663
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
664 The following functions are available to handle this encoding:
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
665
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
666 @defun rfc1843-decode-region start end
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
667 Decode HZ-encoded text in the region @var{start} to @var{end}.
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
668 @end defun
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
669
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
670 @defun rfc1843-decode-string string
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
671 Decode the HZ-encoded @var{string} and return the result.
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
672 @end defun
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
673
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
674
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
675 @node mailcap
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
676 @section mailcap
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
677
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
678 As specified by RFC 1524, @sc{mime}-aware message handlers parse
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
679 @dfn{mailcap} files from a default list, which can be overridden by the
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
680 @code{MAILCAP} environment variable. These describe how elements are
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
681 supposed to be displayed. Here's an example file:
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
682
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
683 @example
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
684 image/*; gimp -8 %s
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
685 audio/wav; wavplayer %s
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
686 @end example
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
687
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
688 This says that all image files should be displayed with @command{gimp},
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
689 and that realaudio files should be played by @command{rvplayer}.
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
690
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
691 The @code{mailcap} library parses such files, and provides functions for
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
692 matching types.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
693
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
694 @defvar mailcap-mime-data
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
695 This variable is an alist of alists containing backup viewing rules for
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
696 @sc{mime} types. These are overridden by rules for a type found in
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
697 mailcap files. The outer alist is keyed on the major content-type and
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
698 the inner alists are keyed on the minor content-type (which can be a
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
699 regular expression).
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
700
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
701 @c Fixme: document this properly!
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
702 For example:
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
703 @example
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
704 (("application"
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
705 ("octet-stream"
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
706 (viewer . mailcap-save-binary-file)
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
707 (non-viewer . t)
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
708 (type . "application/octet-stream"))
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
709 ("plain"
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
710 (viewer . view-mode)
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
711 (test fboundp 'view-mode)
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
712 (type . "text/plain")))
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
713 @end example
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
714 @end defvar
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
715
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
716 @defopt mailcap-default-mime-data
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
717 This variable is the default value of @code{mailcap-mime-data}. It
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
718 exists to allow setting the value using Custom. It is merged with
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
719 values from mailcap files by @code{mailcap-parse-mailcaps}.
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
720 @end defopt
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
721
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
722 Although it is not specified by the RFC, @sc{mime} tools normally use a
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
723 common means of associating file extensions with defualt @sc{mime} types
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
724 in the absence of other information about the type of a file. The
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
725 information is found in per-user files @file{~/.mime.types} and system
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
726 @file{mime.types} files found in quasi-standard places. Here is an
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
727 example:
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
728
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
729 @example
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
730 application/x-dvi dvi
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
731 audio/mpeg mpga mpega mp2 mp3
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
732 image/jpeg jpeg jpg jpe
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
733 @end example
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
734
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
735
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
736 @defvar mailcap-mime-extensions
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
737 This variable is an alist @sc{mime} types keyed by file extensions.
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
738 This is overridden by entries found in @file{mime.types} files.
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
739 @end defvar
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
740
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
741 @defopt mailcap-default-mime-extensions
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
742 This variable is the default value of @code{mailcap-mime-extensions}.
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
743 It exists to allow setting the value using Custom. It is merged with
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
744 values from mailcap files by @code{mailcap-parse-mimetypes}.
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
745 @end defopt
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
746
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
747 Interface functions:
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
748
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
749 @defun mailcap-parse-mailcaps &optional path force
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
750 Parse all the mailcap files specified in a path string @var{path} and
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
751 merge them with the values from @code{mailcap-mime-data}. Components of
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
752 @var{path} are separated by the @code{path-separator} character
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
753 appropriate for the system. If @var{force} is non-@code{nil}, the files
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
754 are re-parsed even if they have been parsed already. If @var{path} is
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
755 omitted, use the value of environment variable @code{MAILCAPS} if it is
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
756 set; otherwise (on Unix) use the path defined in RFC 1524, plus
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
757 @file{/usr/local/etc/mailcap}.
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
758 @end defun
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
759
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
760 @defun mailcap-parse-mimetypes &optional path force
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
761 Parse all the mimetypes specified in a Unix-style path string @var{path}
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
762 and merge them with the values from @code{mailcap-mime-extensions}.
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
763 Components of @var{path} are separated by the @code{path-separator}
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
764 character appropriate for the system. If @var{path} is omitted, use the
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
765 value of environment variable @code{MIMETYPES} if set; otherwise use a
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
766 default path consistent with that used by @code{mailcap-parse-mailcaps}.
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
767 If @var{force} is non-@code{nil}, the files are re-parsed even if they
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
768 have been parsed already.
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
769 @end defun
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
770
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
771 @defun mailcap-mime-info string &optional request
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
772 Gets the viewer command for content-type @var{string}. @code{nil} is
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
773 returned if none is found. Expects @var{string} to be a complete
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
774 content-type header line.
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
775
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
776 If @var{request} is non-@code{nil} it specifies what information to
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
777 return. If it is nil or the empty string, the viewer (second field of
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
778 the mailcap entry) will be returned. If it is a string, then the
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
779 mailcap field corresponding to that string will be returned
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
780 (@samp{print}, @samp{description}, whatever). If it is a number, all
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
781 the information for this viewer is returned. If it is @code{all}, then
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
782 all possible viewers for this type is returned.
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
783 @end defun
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
784
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
785 @defun mailcap-mime-types
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
786 This function returns a list of all the defined media types.
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
787 @end defun
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
788
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
789 @defun mailcap-extension-to-mime extension
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
790 This function returns the content type defined for a file with the given
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
791 @var{extension}.
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
792 @end defun
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
793
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
794
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
795 @node Decoding and Viewing
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
796 @chapter Decoding and Viewing
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
797
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
798 This chapter deals with decoding and viewing @sc{mime} messages on a
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
799 higher level.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
800
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
801 The main idea is to first analyze a @sc{mime} article, and then allow
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
802 other programs to do things based on the list of @dfn{handles} that are
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
803 returned as a result of this analysis.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
804
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
805 @menu
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
806 * Dissection:: Analyzing a @sc{mime} message.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
807 * Handles:: Handle manipulations.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
808 * Display:: Displaying handles.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
809 * Customization:: Variables that affect display.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
810 * New Viewers:: How to write your own viewers.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
811 @end menu
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
812
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
813
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
814 @node Dissection
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
815 @section Dissection
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
816
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
817 The @code{mm-dissect-buffer} is the function responsible for dissecting
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
818 a @sc{mime} article. If given a multipart message, it will recursively
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
819 descend the message, following the structure, and return a tree of
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
820 @sc{mime} handles that describes the structure of the message.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
821
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
822
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
823 @node Handles
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
824 @section Handles
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
825
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
826 A @sc{mime} handle is a list that fully describes a @sc{mime} component.
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
827
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
828 The following macros can be used to access elements from the
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
829 @var{handle} argument:
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
830
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
831 @defmac mm-handle-buffer handle
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
832 Return the buffer that holds the contents of the undecoded @sc{mime}
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
833 part.
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
834 @end defmac
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
835
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
836 @defmac mm-handle-type handle
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
837 Return the parsed @samp{Content-Type} of the part.
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
838 @end defmac
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
839
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
840 @defmac mm-handle-encoding handle
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
841 Return the @samp{Content-Transfer-Encoding} of the part.
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
842 @end defmac
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
843
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
844 @defmac mm-handle-undisplayer handle
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
845 Return the function that can be used to remove the displayed part (if it
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
846 has been displayed).
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
847 @end defmac
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
848
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
849 @defmac mm-handle-set-undisplayer handle function
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
850 Set the undisplayer function for the part to function.
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
851 @end defmac
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
852
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
853 @defmac mm-handle-disposition
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
854 Return the parsed @samp{Content-Disposition} of the part.
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
855 @end defmac
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
856
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
857 @defmac mm-handle-disposition
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
858 Return the description of the part.
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
859 @end defmac
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
860
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
861 @defmac mm-get-content-id id
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
862 Returns the handle(s) referred to by @var{id}, the @samp{Content-ID} of
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
863 the part.
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
864 @end defmac
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
865
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
866
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
867 @node Display
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
868 @section Display
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
869
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
870 Functions for displaying, removing and saving. In the descriptions
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
871 below, `the part' means the @sc{mime} part represented by the
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
872 @var{handle} argument.
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
873
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
874 @defun mm-display-part handle &optional no-default
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
875 Display the part. Return @code{nil} if the part is removed,
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
876 @code{inline} if it is displayed inline or @code{external} if it is
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
877 displayed externally. If @var{no-default} is non-@code{nil}, the part
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
878 is not displayed unless the @sc{mime} type of @var{handle} is defined to
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
879 be displayed inline or there is an display method defined for it; i.e.@:
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
880 no default external method will be used.
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
881 @end defun
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
882
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
883 @defun mm-remove-part handle
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
884 Remove the part if it has been displayed.
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
885 @end defun
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
886
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
887 @defun mm-inlinable-p handle
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
888 Return non-@code{nil} if the part can be displayed inline.
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
889 @end defun
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
890
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
891 @defun mm-automatic-display-p handle
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
892 Return non-@code{nil} if the user has requested automatic display of the
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
893 @sc{mime} type of the part.
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
894 @end defun
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
895
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
896 @defun mm-destroy-part handle
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
897 Free all the resources used by the part.
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
898 @end defun
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
899
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
900 @defun mm-save-part handle
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
901 Save the part to a file. The user is prompted for a file name to use.
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
902 @end defun
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
903
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
904 @defun mm-pipe-part handle
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
905 Pipe the part through a shell command. The user is prompted for the
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
906 command to use.
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
907 @end defun
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
908
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
909 @defun mm-interactively-view-part handle
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
910 Prompt for a mailcap method to use to view the part and display it
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
911 externally using that method.
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
912 @end defun
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
913
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
914
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
915 @node Customization
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
916 @section Customization
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
917
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
918 The display of @sc{mime} types may be customized with the following
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
919 options.
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
920
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
921 @defopt mm-inline-media-tests
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
922 This is an alist where the key is a @sc{mime} type, the second element
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
923 is a function to display the part @dfn{inline} (i.e., inside Emacs), and
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
924 the third element is a form to be @code{eval}ed to say whether the part
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
925 can be displayed inline.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
926
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
927 This variable specifies whether a part @emph{can} be displayed inline,
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
928 and, if so, how to do it. It does not say whether parts are
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
929 @emph{actually} displayed inline.
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
930 @end defopt
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
931
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
932 @defopt mm-inlined-types
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
933 This, on the other hand, says what types are to be displayed inline, if
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
934 they satisfy the conditions set by the variable above. It's a list of
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
935 @sc{mime} media types.
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
936 @end defopt
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
937
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
938 @defopt mm-automatic-display
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
939 This is a list of types that are to be displayed ``automatically'', but
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
940 only if the above variable allows it. That is, only inlinable parts can
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
941 be displayed automatically.
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
942 @end defopt
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
943
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
944 @defopt mm-attachment-override-types
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
945 Some @sc{mime} agents create parts that have a content-disposition of
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
946 @samp{attachment}. This variable allows overriding that disposition and
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
947 displaying the part inline. (Note that the disposition is only
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
948 overridden if we are able to, and want to, display the part inline.)
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
949 @end defopt
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
950
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
951 @defopt mm-discouraged-alternatives
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
952 List of @sc{mime} types that are discouraged when viewing
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
953 @samp{multipart/alternative}. Viewing agents are supposed to view the
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
954 last possible part of a message, as that is supposed to be the richest.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
955 However, users may prefer other types instead, and this list says what
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
956 types are most unwanted. If, for instance, @samp{text/html} parts are
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
957 very unwanted, and @samp{text/richtech} parts are somewhat unwanted,
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
958 then the value of this variable should be set to:
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
959
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
960 @lisp
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
961 ("text/html" "text/richtext")
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
962 @end lisp
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
963 @end defopt
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
964
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
965 @defopt mm-inline-large-images-p
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
966 When displaying inline images that are larger than the window, XEmacs
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
967 does not enable scrolling, which means that you cannot see the whole
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
968 image. To prevent this, the library tries to determine the image size
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
969 before displaying it inline, and if it doesn't fit the window, the
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
970 library will display it externally (e.g. with @samp{ImageMagick} or
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
971 @samp{xv}). Setting this variable to @code{t} disables this check and
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
972 makes the library display all inline images as inline, regardless of
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
973 their size.
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
974 @end defopt
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
975
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
976 @defopt mm-inline-override-p
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
977 @code{mm-inlined-types} may include regular expressions, for example to
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
978 specify that all @samp{text/.*} parts be displayed inline. If a user
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
979 prefers to have a type that matches such a regular expression be treated
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
980 as an attachment, that can be accomplished by setting this variable to a
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
981 list containing that type. For example assuming @code{mm-inlined-types}
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
982 includes @samp{text/.*}, then including @samp{text/html} in this
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
983 variable will cause @samp{text/html} parts to be treated as attachments.
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
984 @end defopt
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
985
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
986
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
987 @node New Viewers
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
988 @section New Viewers
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
989
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
990 Here's an example viewer for displaying @samp{text/enriched} inline:
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
991
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
992 @lisp
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
993 (defun mm-display-enriched-inline (handle)
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
994 (let (text)
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
995 (with-temp-buffer
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
996 (mm-insert-part handle)
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
997 (save-window-excursion
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
998 (enriched-decode (point-min) (point-max))
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
999 (setq text (buffer-string))))
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1000 (mm-insert-inline handle text)))
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1001 @end lisp
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1002
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1003 We see that the function takes a @sc{mime} handle as its parameter. It
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1004 then goes to a temporary buffer, inserts the text of the part, does some
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1005 work on the text, stores the result, goes back to the buffer it was
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1006 called from and inserts the result.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1007
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1008 The two important helper functions here are @code{mm-insert-part} and
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1009 @code{mm-insert-inline}. The first function inserts the text of the
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1010 handle in the current buffer. It handles charset and/or content
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1011 transfer decoding. The second function just inserts whatever text you
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1012 tell it to insert, but it also sets things up so that the text can be
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1013 ``undisplayed' in a convenient manner.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1014
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1015
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1016 @node Composing
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1017 @chapter Composing
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1018 @cindex Composing
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1019 @cindex MIME Composing
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1020 @cindex MML
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1021 @cindex MIME Meta Language
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1022
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1023 Creating a @sc{mime} message is boring and non-trivial. Therefore, a
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1024 library called @code{mml} has been defined that parses a language called
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1025 MML (@sc{mime} Meta Language) and generates @sc{mime} messages.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1026
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1027 @findex mml-generate-mime
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1028 The main interface function is @code{mml-generate-mime}. It will
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1029 examine the contents of the current (narrowed-to) buffer and return a
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1030 string containing the @sc{mime} message.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1031
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1032 @menu
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1033 * Simple MML Example:: An example MML document.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1034 * MML Definition:: All valid MML elements.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1035 * Advanced MML Example:: Another example MML document.
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
1036 * Charset Translation:: How charsets are mapped from Mule to MIME.
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1037 * Conversion:: Going from @sc{mime} to MML and vice versa.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1038 @end menu
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1039
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1040
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1041 @node Simple MML Example
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1042 @section Simple MML Example
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1043
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1044 Here's a simple @samp{multipart/alternative}:
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1045
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1046 @example
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1047 <#multipart type=alternative>
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1048 This is a plain text part.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1049 <#part type=text/enriched>
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1050 <center>This is a centered enriched part</center>
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1051 <#/multipart>
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1052 @end example
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1053
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1054 After running this through @code{mml-generate-mime}, we get this:
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1055
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1056 @example
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1057 Content-Type: multipart/alternative; boundary="=-=-="
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1058
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1059
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1060 --=-=-=
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1061
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1062
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1063 This is a plain text part.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1064
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1065 --=-=-=
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1066 Content-Type: text/enriched
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1067
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1068
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1069 <center>This is a centered enriched part</center>
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1070
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1071 --=-=-=--
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1072 @end example
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1073
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1074
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1075 @node MML Definition
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1076 @section MML Definition
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1077
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1078 The MML language is very simple. It looks a bit like an SGML
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1079 application, but it's not.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1080
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1081 The main concept of MML is the @dfn{part}. Each part can be of a
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1082 different type or use a different charset. The way to delineate a part
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1083 is with a @samp{<#part ...>} tag. Multipart parts can be introduced
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1084 with the @samp{<#multipart ...>} tag. Parts are ended by the
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1085 @samp{<#/part>} or @samp{<#/multipart>} tags. Parts started with the
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1086 @samp{<#part ...>} tags are also closed by the next open tag.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1087
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1088 There's also the @samp{<#external ...>} tag. These introduce
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1089 @samp{external/message-body} parts.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1090
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1091 Each tag can contain zero or more parameters on the form
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1092 @samp{parameter=value}. The values may be enclosed in quotation marks,
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1093 but that's not necessary unless the value contains white space. So
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1094 @samp{filename=/home/user/#hello$^yes} is perfectly valid.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1095
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1096 The following parameters have meaning in MML; parameters that have no
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1097 meaning are ignored. The MML parameter names are the same as the
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1098 @sc{mime} parameter names; the things in the parentheses say which
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1099 header it will be used in.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1100
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1101 @table @samp
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1102 @item type
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
1103 The @sc{mime} type of the part (@samp{Content-Type}).
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1104
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1105 @item filename
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1106 Use the contents of the file in the body of the part
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
1107 (@samp{Content-Disposition}).
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1108
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1109 @item charset
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1110 The contents of the body of the part are to be encoded in the character
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
1111 set speficied (@samp{Content-Type}).
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1112
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1113 @item name
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1114 Might be used to suggest a file name if the part is to be saved
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
1115 to a file (@samp{Content-Type}).
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1116
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1117 @item disposition
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1118 Valid values are @samp{inline} and @samp{attachment}
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
1119 (@samp{Content-Disposition}).
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1120
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1121 @item encoding
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1122 Valid values are @samp{7bit}, @samp{8bit}, @samp{quoted-printable} and
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
1123 @samp{base64} (@samp{Content-Transfer-Encoding}).
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1124
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1125 @item description
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
1126 A description of the part (@samp{Content-Description}).
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1127
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1128 @item creation-date
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
1129 RFC822 date when the part was created (@samp{Content-Disposition}).
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1130
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1131 @item modification-date
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
1132 RFC822 date when the part was modified (@samp{Content-Disposition}).
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1133
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1134 @item read-date
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
1135 RFC822 date when the part was read (@samp{Content-Disposition}).
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1136
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1137 @item size
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
1138 The size (in octets) of the part (@samp{Content-Disposition}).
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1139
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1140 @end table
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1141
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1142 Parameters for @samp{application/octet-stream}:
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1143
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1144 @table @samp
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1145 @item type
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1146 Type of the part; informal---meant for human readers
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
1147 (@samp{Content-Type}).
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1148 @end table
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1149
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1150 Parameters for @samp{message/external-body}:
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1151
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1152 @table @samp
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1153 @item access-type
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1154 A word indicating the supported access mechanism by which the file may
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1155 be obtained. Values include @samp{ftp}, @samp{anon-ftp}, @samp{tftp},
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
1156 @samp{localfile}, and @samp{mailserver}. (@samp{Content-Type}.)
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1157
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1158 @item expiration
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1159 The RFC822 date after which the file may no longer be fetched.
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
1160 (@samp{Content-Type}.)
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1161
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1162 @item size
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
1163 The size (in octets) of the file. (@samp{Content-Type}.)
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1164
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1165 @item permission
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1166 Valid values are @samp{read} and @samp{read-write}
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
1167 (@samp{Content-Type}).
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1168
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1169 @end table
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1170
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1171
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1172 @node Advanced MML Example
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1173 @section Advanced MML Example
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1174
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1175 Here's a complex multipart message. It's a @samp{multipart/mixed} that
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1176 contains many parts, one of which is a @samp{multipart/alternative}.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1177
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1178 @example
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1179 <#multipart type=mixed>
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1180 <#part type=image/jpeg filename=~/rms.jpg disposition=inline>
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1181 <#multipart type=alternative>
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1182 This is a plain text part.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1183 <#part type=text/enriched name=enriched.txt>
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1184 <center>This is a centered enriched part</center>
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1185 <#/multipart>
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1186 This is a new plain text part.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1187 <#part disposition=attachment>
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1188 This plain text part is an attachment.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1189 <#/multipart>
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1190 @end example
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1191
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1192 And this is the resulting @sc{mime} message:
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1193
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1194 @example
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1195 Content-Type: multipart/mixed; boundary="=-=-="
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1196
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1197
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1198 --=-=-=
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1199
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1200
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1201
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1202 --=-=-=
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1203 Content-Type: image/jpeg;
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1204 filename="~/rms.jpg"
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1205 Content-Disposition: inline;
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1206 filename="~/rms.jpg"
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1207 Content-Transfer-Encoding: base64
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1208
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1209 /9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRof
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1210 Hh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/wAALCAAwADABAREA/8QAHwAA
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1211 AQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQR
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1212 BRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RF
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1213 RkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ip
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1214 qrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/9oACAEB
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1215 AAA/AO/rifFHjldNuGsrDa0qcSSHkA+gHrXKw+LtWLrMb+RgTyhbr+HSug07xNqV9fQtZrNI
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1216 AyiaE/NuBPOOOP0rvRNE880KOC8TbXXGCv1FPqjrF4LDR7u5L7SkTFT/ALWOP1xXgTuXfc7E
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1217 sx6nua6rwp4IvvEM8chCxWxOdzn7wz6V9AaB4S07w9p5itow0rDLSY5Pt9K43xO66P4xs71m
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1218 2QXiGCbA4yOVJ9+1aYORkdK434lyNH4ahCnG66VT9Nj15JFbPdX0MS43M4VQf5/yr2vSpLnw
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1219 5ZW8dlCZ8KFXjOPX0/mK6rSPEGt3Angu44fNEReHYNvIH3TzXDeKNO8RX+kSX2ouZkicTIOc
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1220 L+g7E810ulFjpVtv3bwgB3HJyK5L4quY/C9sVxk3ij/xx6850u7t1mtp/wDlpEw3An3Jr3Dw
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1221 34gsbWza4nBlhC5LDsaW6+IFgupQyCF3iHH7gA7c9R9ay7zx6t7aX9jHC4smhfBkGCvHGfrm
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1222 tLQ7hbnRrV1GPkAP1x1/Hr+Ncr8Vzjwrbf8AX6v/AKA9eQRyYlQk8Yx9K6XTNbkgia2ciSIn
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1223 7p5Ga9Atte0LTLKO6it4i7dVRFJDcZ4PvXN+JvEMF9bILVGXJLSZ4zkjivRPDaeX4b08HOTC
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1224 pOffmua+KkbS+GLVUGT9tT/0B68eeIpIFYjB70+OOVXyoOM9+M1eaWeCLzHPyHGO/NVWvJJm
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1225 jQ8KGH1NfQWhXSXmh2c8eArRLwO3HSv/2Q==
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1226
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1227 --=-=-=
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1228 Content-Type: multipart/alternative; boundary="==-=-="
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1229
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1230
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1231 --==-=-=
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1232
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1233
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1234 This is a plain text part.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1235
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1236 --==-=-=
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1237 Content-Type: text/enriched;
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1238 name="enriched.txt"
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1239
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1240
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1241 <center>This is a centered enriched part</center>
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1242
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1243 --==-=-=--
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1244
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1245 --=-=-=
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1246
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1247 This is a new plain text part.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1248
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1249 --=-=-=
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1250 Content-Disposition: attachment
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1251
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1252
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1253 This plain text part is an attachment.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1254
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1255 --=-=-=--
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1256 @end example
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1257
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1258 @node Charset Translation
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1259 @section Charset Translation
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1260 @cindex charsets
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1261
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1262 During translation from MML to @sc{mime}, for each @sc{mime} part which
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
1263 has been composed inside Emacs, an appropriate @sc{mime} charset has to
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
1264 be chosen.
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1265
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1266 @vindex mail-parse-charset
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
1267 If you are running a non-Mule Emacs, this process is simple: if the part
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
1268 contains any non-@sc{ascii} (8-bit) characters, the @sc{mime} charset
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1269 given by @code{mail-parse-charset} (a symbol) is used. (Never set this
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1270 variable directly, though. If you want to change the default charset,
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1271 please consult the documentation of the package which you use to process
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
1272 @sc{mime} messages. @xref{Various Message Variables, , Various Message
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
1273 Variables, message, Message Manual}, for example.) If there are only
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
1274 @sc{ascii} characters, the @sc{mime} charset @samp{US-ASCII} is used, of
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
1275 course.
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1276
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
1277 @cindex Mule
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1278 @cindex UTF-8
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1279 @cindex Unicode
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1280 @vindex mm-mime-mule-charset-alist
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
1281 Things are slightly more complicated when running Emacs with Mule
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
1282 support. In this case, a list of the Mule charsets used in the part is
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
1283 obtained, and the corresponding @sc{mime} charsets are determined. If
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
1284 this results in a single @sc{mime} charset, this is used to encode the
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
1285 part. But if the resulting list of @sc{mime} charsets contains more
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
1286 than one element, two things can happen: if it is possible to encode the
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
1287 part via UTF-8, this charset is used. (For this, Emacs must support the
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
1288 @code{utf-8} coding system, and the part must consist entirely of
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
1289 characters which have Unicode counterparts.) If UTF-8 is not available,
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
1290 the part is split into several, so that each one can be encoded with a
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
1291 single @sc{mime} charset. The part can only be split at line
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
1292 boundaries, though---if more than one @sc{mime} charset is required to
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
1293 encode a single line, it is not possible to encode the part.
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1294
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1295 @node Conversion
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1296 @section Conversion
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1297
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1298 @findex mime-to-mml
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1299 A (multipart) @sc{mime} message can be converted to MML with the
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1300 @code{mime-to-mml} function. It works on the message in the current
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1301 buffer, and substitutes MML markup for @sc{mime} boundaries.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1302 Non-textual parts do not have their contents in the buffer, but instead
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1303 have the contents in separate buffers that are referred to from the MML
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1304 tags.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1305
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1306 @findex mml-to-mime
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1307 An MML message can be converted back to @sc{mime} by the
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1308 @code{mml-to-mime} function.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1309
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1310 These functions are in certain senses ``lossy''---you will not get back
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1311 an identical message if you run @sc{mime-to-mml} and then
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1312 @sc{mml-to-mime}. Not only will trivial things like the order of the
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1313 headers differ, but the contents of the headers may also be different.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1314 For instance, the original message may use base64 encoding on text,
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1315 while @sc{mml-to-mime} may decide to use quoted-printable encoding, and
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1316 so on.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1317
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1318 In essence, however, these two functions should be the inverse of each
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1319 other. The resulting contents of the message should remain equivalent,
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1320 if not identical.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1321
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1322
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1323 @node Standards
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1324 @chapter Standards
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1325
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1326 The Emacs @sc{mime} library implements handling of various elements
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1327 according to a (somewhat) large number of RFCs, drafts and standards
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1328 documents. This chapter lists the relevant ones. They can all be
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1329 fetched from @samp{http://quimby.gnus.org/notes/}.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1330
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1331 @table @dfn
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1332 @item RFC822
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1333 @itemx STD11
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1334 Standard for the Format of ARPA Internet Text Messages.
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1335
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1336 @item RFC1036
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1337 Standard for Interchange of USENET Messages
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1338
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
1339 @item RFC1524
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
1340 A User Agent Configuration Mechanism For Multimedia Mail Format
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
1341 Information
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
1342
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1343 @item RFC2045
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1344 Format of Internet Message Bodies
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1345
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1346 @item RFC2046
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1347 Media Types
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1348
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1349 @item RFC2047
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1350 Message Header Extensions for Non-ASCII Text
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1351
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1352 @item RFC2048
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1353 Registration Procedures
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1354
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1355 @item RFC2049
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1356 Conformance Criteria and Examples
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1357
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1358 @item RFC2231
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1359 MIME Parameter Value and Encoded Word Extensions: Character Sets,
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1360 Languages, and Continuations
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1361
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1362 @item RFC1843
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1363 HZ - A Data Format for Exchanging Files of Arbitrarily Mixed Chinese and
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1364 ASCII characters
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1365
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1366 @item draft-ietf-drums-msg-fmt-05.txt
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1367 Draft for the successor of RFC822
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1368
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1369 @item RFC2112
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1370 The MIME Multipart/Related Content-type
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1371
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1372 @item RFC1892
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1373 The Multipart/Report Content Type for the Reporting of Mail System
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1374 Administrative Messages
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1375
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1376 @item RFC2183
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1377 Communicating Presentation Information in Internet Messages: The
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1378 Content-Disposition Header Field
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1379
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1380 @end table
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1381
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1382
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1383 @node Index
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1384 @chapter Index
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1385 @printindex cp
33435
4ef19e88da9a Various markup and content changes, particularly to use @def... for
Dave Love <fx@gnu.org>
parents: 32258
diff changeset
1386 @printindex fn
31853
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1387
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1388 @summarycontents
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1389 @contents
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1390 @bye
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1391
25af74a14174 *** empty log message ***
Dave Love <fx@gnu.org>
parents:
diff changeset
1392 @c End: