\input texinfo
+@include gnus-overrides.texi
+
@setfilename emacs-mime
@settitle Emacs MIME Manual
@synindex fn cp
@copying
This file documents the Emacs MIME interface functionality.
-Copyright @copyright{} 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-2006 Free Software Foundation, Inc.
+Copyright @copyright{} 1998-2012 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.2 or
+under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with no
-Invariant Sections, with the Front-Cover texts being ``A GNU
-Manual'', and with the Back-Cover Texts as in (a) below. A copy of the
-license is included in the section entitled ``GNU Free Documentation
-License'' in the Emacs manual.
-
-(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
-this GNU Manual, like GNU software. Copies published by the Free
-Software Foundation raise funds for GNU development.''
-
-This document is part of a collection distributed under the GNU Free
-Documentation License. If you want to distribute this document
-separately from the collection, you can do so by adding a copy of the
-license to the document, as described in section 6 of the license.
+Invariant Sections, with the Front-Cover texts being ``A GNU Manual'',
+and with the Back-Cover Texts as in (a) below. A copy of the license
+is included in the section entitled ``GNU Free Documentation License''.
+
+(a) The FSF's Back-Cover Text is: ``You have the freedom to copy and
+modify this GNU manual. Buying copies from the FSF supports it in
+developing GNU and promoting software freedom.''
@end quotation
@end copying
-@dircategory Emacs
+@c Node ``Interface Functions'' uses Latin-1 characters
+@documentencoding ISO-8859-1
+
+@dircategory Emacs lisp libraries
@direntry
-* Emacs MIME: (emacs-mime). Emacs MIME de/composition library.
+* Emacs MIME: (emacs-mime). Emacs MIME de/composition library.
@end direntry
@iftex
@finalout
@setchapternewpage odd
@titlepage
+@ifset WEBHACKDEVEL
+@title Emacs MIME Manual (DEVELOPMENT VERSION)
+@end ifset
+@ifclear WEBHACKDEVEL
@title Emacs MIME Manual
+@end ifclear
@author by Lars Magne Ingebrigtsen
@page
@insertcopying
@end titlepage
+@contents
+
@node Top
@top Emacs MIME
recommended that anyone who intends writing @acronym{MIME}-compliant software
read at least RFC2045 and RFC2047.
+@ifnottex
+@insertcopying
+@end ifnottex
+
@menu
* Decoding and Viewing:: A framework for decoding and viewing.
* Composing:: @acronym{MML}; a language for describing @acronym{MIME} parts.
* Interface Functions:: An abstraction over the basic functions.
* Basic Functions:: Utility and basic parsing functions.
* Standards:: A summary of RFCs and working documents used.
+* GNU Free Documentation License:: The license for this documentation.
* Index:: Function and variable index.
@end menu
@table @code
@item postscript
@findex postscript
-Postscript file.
+PostScript file.
@item uu
@findex uu
@vindex mm-inline-large-images
When displaying inline images that are larger than the window, Emacs
does not enable scrolling, which means that you cannot see the whole
-image. To prevent this, the library tries to determine the image size
+image. To prevent this, the library tries to determine the image size
before displaying it inline, and if it doesn't fit the window, the
-library will display it externally (e.g. with @samp{ImageMagick} or
-@samp{xv}). Setting this variable to @code{t} disables this check and
+library will display it externally (e.g., with @samp{ImageMagick} or
+@samp{xv}). Setting this variable to @code{t} disables this check and
makes the library display all inline images as inline, regardless of
-their size.
+their size. If you set this variable to @code{resize}, the image will
+be displayed resized to fit in the window, if Emacs has the ability to
+resize images.
+
+@item mm-inline-large-images-proportion
+@vindex mm-inline-images-max-proportion
+The proportion used when resizing large images.
@item mm-inline-override-types
@vindex mm-inline-override-types
@item mm-text-html-renderer
@vindex mm-text-html-renderer
This selects the function used to render @acronym{HTML}. The predefined
-renderers are selected by the symbols @code{w3},
+renderers are selected by the symbols @code{gnus-article-html}, @code{w3},
@code{w3m}@footnote{See @uref{http://emacs-w3m.namazu.org/} for more
information about emacs-w3m}, @code{links}, @code{lynx},
@code{w3m-standalone} or @code{html2text}. If @code{nil} use an
@vindex mm-inline-text-html-with-images
Some @acronym{HTML} mails might have the trick of spammers using
@samp{<img>} tags. It is likely to be intended to verify whether you
-have read the mail. You can prevent your personal informations from
+have read the mail. You can prevent your personal information from
leaking by setting this option to @code{nil} (which is the default).
It is currently ignored by Emacs/w3. For emacs-w3m, you may use the
command @kbd{t} on the image anchor to show an image even if it is
@item mm-w3m-safe-url-regexp
@vindex mm-w3m-safe-url-regexp
-A regular expression that matches safe URL names, i.e. URLs that are
+A regular expression that matches safe URL names, i.e., URLs that are
unlikely to leak personal information when rendering @acronym{HTML}
email (the default value is @samp{\\`cid:}). If @code{nil} consider
-all URLs safe.
+all URLs safe. In Gnus, this will be overridden according to the value
+of the variable @code{gnus-safe-html-newsgroups}, @xref{Various
+Various, ,Various Various, gnus, Gnus Manual}.
@item mm-inline-text-html-with-w3m-keymap
@vindex mm-inline-text-html-with-w3m-keymap
@item mm-file-name-delete-gotchas
@findex mm-file-name-delete-gotchas
Delete characters that could have unintended consequences when used
-with flawed shell scripts, i.e. @samp{|}, @samp{>} and @samp{<}; and
+with flawed shell scripts, i.e., @samp{|}, @samp{>} and @samp{<}; and
@samp{-}, @samp{.} as the first character.
@item mm-file-name-delete-whitespace
@code{(iso-8859-1)}. You can override this setting on a per-message
basis by using the @code{charset} @acronym{MML} tag (@pxref{MML Definition}).
+As different hierarchies prefer different charsets, you may want to set
+@code{mm-coding-system-priorities} according to the hierarchy in Gnus.
+Here's an example:
+
+@c Corrections about preferred charsets are welcome. de, fr and fj
+@c should be correct, I don't know about the rest (so these are only
+@c examples):
+@lisp
+(add-to-list 'gnus-newsgroup-variables 'mm-coding-system-priorities)
+(setq gnus-parameters
+ (nconc
+ ;; Some charsets are just examples!
+ '(("^cn\\." ;; Chinese
+ (mm-coding-system-priorities
+ '(iso-8859-1 cn-big5 chinese-iso-7bit utf-8)))
+ ("^cz\\.\\|^pl\\." ;; Central and Eastern European
+ (mm-coding-system-priorities '(iso-8859-2 utf-8)))
+ ("^de\\." ;; German language
+ (mm-coding-system-priorities '(iso-8859-1 iso-8859-15 utf-8)))
+ ("^fr\\." ;; French
+ (mm-coding-system-priorities '(iso-8859-15 iso-8859-1 utf-8)))
+ ("^fj\\." ;; Japanese
+ (mm-coding-system-priorities
+ '(iso-8859-1 iso-2022-jp iso-2022-jp-2 shift_jis utf-8)))
+ ("^ru\\." ;; Cyrillic
+ (mm-coding-system-priorities
+ '(koi8-r iso-8859-5 iso-8859-1 utf-8))))
+ gnus-parameters))
+@end lisp
+
@item mm-content-transfer-encoding-defaults
@vindex mm-content-transfer-encoding-defaults
Mapping from @acronym{MIME} types to encoding to use. This variable is usually
used.
@code{qp-or-base64} has another effect. It will fold long lines so that
-MIME parts may not be broken by MTA. So do @code{quoted-printable} and
+MIME parts may not be broken by MTA@. So do @code{quoted-printable} and
@code{base64}.
Note that it affects body encoding only when a part is a raw forwarded
newline characters are not present in the buffer, no flow encoding
occurs.
+You can customize the value of the @code{mml-enable-flowed} variable
+to enable or disable the flowed encoding usage when newline
+characters are present in the buffer.
+
On decoding flowed text, lines with soft newline characters are filled
together and wrapped after the column decided by
@code{fill-flowed-display-column}. The default is to wrap after
@vindex rfc2047-encoded-word-regexp
When decoding words, this library looks for matches to this regexp.
+@item rfc2047-encoded-word-regexp-loose
+@vindex rfc2047-encoded-word-regexp-loose
+This is a version from which the regexp for the Q encoding pattern of
+@code{rfc2047-encoded-word-regexp} is made loose.
+
@item rfc2047-encode-encoded-words
@vindex rfc2047-encode-encoded-words
The boolean variable specifies whether encoded words
-(e.g. @samp{=?hello?=}) should be encoded again.
+(e.g., @samp{=?us-ascii?q?hello?=}) should be encoded again.
+@code{rfc2047-encoded-word-regexp} is used to look for such words.
+
+@item rfc2047-allow-irregular-q-encoded-words
+@vindex rfc2047-allow-irregular-q-encoded-words
+The boolean variable specifies whether irregular Q encoded words
+(e.g., @samp{=?us-ascii?q?hello??=}) should be decoded. If it is
+non-@code{nil}, @code{rfc2047-encoded-word-regexp-loose} is used instead
+of @code{rfc2047-encoded-word-regexp} to look for encoded words.
@end table
@item rfc2047-encode-parameter
@findex rfc2047-encode-parameter
-Encode a parameter in the RFC2047-like style. This is a replacement for
-the @code{rfc2231-encode-string} function. @xref{rfc2231}.
-
-When attaching files as @acronym{MIME} parts, we should use the RFC2231
-encoding to specify the file names containing non-@acronym{ASCII}
-characters. However, many mail softwares don't support it in practice
-and recipients won't be able to extract files with correct names.
-Instead, the RFC2047-like encoding is acceptable generally. This
-function provides the very RFC2047-like encoding, resigning to such a
-regrettable trend. To use it, put the following line in your
-@file{~/.gnus.el} file:
-
-@lisp
-(defalias 'mail-header-encode-parameter 'rfc2047-encode-parameter)
-@end lisp
+Encode a parameter in the RFC2047-like style. This is a substitution
+for the @code{rfc2231-encode-string} function, that is the standard but
+many mailers don't support it. @xref{rfc2231}.
@end table
@result{} 905595714.0
(seconds-to-time 905595714.0)
-@result{} (13818 19266 0)
+@result{} (13818 19266 0 0)
(time-to-days '(13818 19266))
@result{} 729644
(days-to-time 729644)
-@result{} (961933 65536)
+@result{} (961933 512)
(time-since '(13818 19266))
-@result{} (0 430)
+@result{} (6797 9607 984839 247000)
(time-less-p '(13818 19266) '(13818 19145))
@result{} nil
(time-to-number-of-days
(time-since
(date-to-time "Mon, 01 Jan 2001 02:22:26 GMT")))
-@result{} 4.146122685185185
+@result{} 4314.095589286675
@end example
And finally, we have @code{safe-date-to-time}, which does the same as
12:21:54 1998 +0200"}.
@item time
-An internal Emacs time. For instance: @code{(13818 26466)}.
+An internal Emacs time. For instance: @code{(13818 26466 0 0)}.
@item seconds
A floating point representation of the internal Emacs time. For
Take a date and return a time.
@item time-to-seconds
-Take a time and return seconds.
+Take a time and return seconds. Note that Emacs has a built-in
+function, @code{float-time}, that does this.
@item seconds-to-time
Take seconds and return a time.
return a ``zero'' time.
@item time-less-p
-Take two times and say whether the first time is less (i. e., earlier)
+Take two times and say whether the first time is less (i.e., earlier)
than the second time.
@item time-since
Take a time and return a time saying how long it was since that time.
@item subtract-time
-Take two times and subtract the second from the first. I. e., return
+Take two times and subtract the second from the first. I.e., return
the time between the two times.
@item days-between
@end table
+@node GNU Free Documentation License
+@chapter GNU Free Documentation License
+@include doclicense.texi
@node Index
@chapter Index
@printindex cp
-@summarycontents
-@contents
@bye
\f
@c mode: texinfo
@c coding: iso-8859-1
@c End:
-
-@ignore
- arch-tag: c7ef2fd0-a91c-4e10-aa52-c1a2b11b1a8d
-@end ignore