From: morioka Date: Tue, 10 Mar 1998 06:30:38 +0000 (+0000) Subject: tm 7.95. X-Git-Tag: tm-7_95~1 X-Git-Url: http://git.chise.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0a13bbcec55dfa171236508297136905c782ad56;p=elisp%2Ftm.git tm 7.95. --- diff --git a/ChangeLog b/ChangeLog index e5a8fe6..6e1f5b9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,113 @@ +Wed Dec 4 05:42:36 1996 MORIOKA Tomohiko + + * emu: Version 7.37 was released. + * bitmap-mule: Version 7.15 was released. + * tl: Version 7.61.14 was released. + * MU: Version 0.36 was released. + * tm: Version 7.95 was released. + * tm-vm: Version 7.76 was released. + * gnus-mime: Version 0.12.1 was released. + * sinfo: Version 3.3 was released. + +Wed Dec 4 05:32:48 1996 MORIOKA Tomohiko + + * Makefile: Add bitmap-mule/. + +Wed Dec 4 05:15:10 1996 MORIOKA Tomohiko + + * Makefile: gnus-mime/*.ol and gnus-mime/*.tex were abolished. + +Wed Dec 4 05:13:13 1996 MORIOKA Tomohiko + + * Makefile: gnus-mime/mk-gnus-mime -> gnus-mime/Gnus-MIME-MK. + +Wed Dec 4 05:10:43 1996 MORIOKA Tomohiko + + * Makefile: Add sinfo (SGML based Emacs info system). + +Wed Dec 4 04:49:14 1996 MORIOKA Tomohiko + + * tm-ew-d.el, tm-ew-e.el: + - RFC 1522 -> RFC 2047. + - Keywords were modified. + + * tm-edit.el: RFC 1521 and 1522 -> RFC 2045, 2046, 2047, 2048 and + 2049. + +Mon Dec 2 22:02:43 1996 MORIOKA Tomohiko + + * tm-ew-d.el (mime-eword/decode-region): Regexp to find + linear-white-space divides two encoded-words was changed. + +Mon Dec 2 19:15:36 1996 MORIOKA Tomohiko + + * doc/tm-ja.sgml: + - RFC 1521, 1522 -> RFC 2045 .. 2049. + - Delete ``What is MIME?'' and ``How is MIME?''. + +Mon Dec 2 16:07:55 1996 MORIOKA Tomohiko + + * README.en: + - Separate tm-gnus and gnus-mime. + - RFC 1522 -> RFC 2047. + +Mon Dec 2 15:29:41 1996 Shuhei KOBAYASHI + + * tm-ew-d.el (mime/unfolding): Save LWSP-char. + +Sat Nov 30 18:40:09 1996 Shuhei KOBAYASHI + + * tm-bbdb.el: Trailing whitespace was stripped. + +Fri Nov 29 23:41:10 1996 Shuhei KOBAYASHI + + * tm-bbdb.el (tm-bbdb/pop-up-bbdb-buffer): Use `framepop-banish' + if framepop is enabled. + (Suggested by Marc Girod + [tm-en:975]) + +Wed Nov 27 15:15:16 1996 MORIOKA Tomohiko + + * Makefile: tl/etl8x16-bitmap.bdf was moved to ../bitmap-mule/. + +Wed Nov 27 11:50:51 1996 MORIOKA Tomohiko + + * Makefile: tm/inst-tm was renamed to tm/TM-MK. + +Wed Nov 27 11:48:53 1996 MORIOKA Tomohiko + + * TM-MK: Renamed from inst-tm. + +Wed Nov 27 11:47:49 1996 MORIOKA Tomohiko + + * inst-tm: Add ../bitmap/. + +Wed Nov 27 11:45:46 1996 MORIOKA Tomohiko + + * TM-CFG: `TM_PACKAGE_PREFIX' and `TM_LISPDIR' were abolished. + +Tue Nov 26 18:45:51 1996 Shuhei KOBAYASHI + + * tm-bbdb.el: 'bbdb is required implicitly. + + * tm-ew-d.el (mime/decode-encoded-word): Catch errors. + (mime/decode-encoded-text): Check validity of encoded-word. + + * tm-def.el (base64-token-regexp): padding character (`=') was + removed. + (base64-token-padding-regexp): New variable; including padding + character. + (mime/B-encoded-text-regexp): Use `base64-token-padding-regexp'. + +Tue Nov 26 12:45:24 1996 MORIOKA Tomohiko + + * TM-CFG: add ../bitmap-mule/. + +Mon Nov 18 12:11:15 1996 MORIOKA Tomohiko + + * Makefile: forgot to add gnus-mime/mk-gnus-mime. (^_^;;; + + Sat Nov 16 07:51:41 1996 MORIOKA Tomohiko * emu: Version 7.34 was released. @@ -8,6 +118,8 @@ Sat Nov 16 07:51:41 1996 MORIOKA Tomohiko * tm-gnus: Version 7.27.3 was released. * gnus-mime: Version 0.12 was released. + * Makefile: Add emu package. + * tm-edit.el (mime-editor/signing-type): Use `pgp-elkins' as default value. (mime-editor/encrypting-type): Use `pgp-elkins' as default value. diff --git a/Makefile b/Makefile index 136a549..909bc54 100644 --- a/Makefile +++ b/Makefile @@ -1,8 +1,8 @@ # -# $Id: Makefile,v 7.30 1996/10/16 00:35:29 morioka Exp morioka $ +# $Id: Makefile,v 7.40 1996/12/04 05:42:36 morioka Exp morioka $ # -VERSION = 7.94 +VERSION = 7.95 SHELL = /bin/sh MAKE = make @@ -22,7 +22,7 @@ PREFIX = NONE EXEC_PREFIX = TM_FILES = tm/README.en tm/ChangeLog \ - tm/Makefile tm/inst-tm tm/TM-ELS tm/TM-CFG \ + tm/Makefile tm/TM-MK tm/TM-ELS tm/TM-CFG \ tm/tm-def.el \ tm/tm-eword.el tm/tm-ew-d.el tm/tm-ew-e.el \ tm/tm-view.el tm/tm-parse.el \ @@ -45,9 +45,9 @@ TM_MH_E_FILES = tm-mh-e/Makefile tm-mh-e/mk-tmh tm-mh-e/TMH-ELS \ tm-mh-e/*.ol tm-mh-e/*.texi tm-mh-e/*.info tm-mh-e/*.tex GNUS_MIME_FILES = gnus-mime/Makefile gnus-mime/*-path \ - gnus-mime/Gnus-MIME-ELS gnus-mime/*.el \ + gnus-mime/Gnus-MIME-* gnus-mime/*.el \ gnus-mime/*.sgml gnus-mime/*.texi gnus-mime/*.info \ - gnus-mime/*.ol gnus-mime/*.tex gnus-mime/ChangeLog + gnus-mime/ChangeLog TM_GNUS_FILES = tm-gnus/Makefile tm-gnus/*-path tm-gnus/mk-tgnus \ tm-gnus/TGNUS-ELS tm-gnus/*.el tm-gnus/ChangeLog \ @@ -62,23 +62,29 @@ TM_MUA_FILES = $(TM_MH_E_FILES) $(GNUS_MIME_FILES) $(TM_GNUS_FILES) \ MEL_FILES = mel/*.el mel/Makefile mel/mk-mel mel/MEL-ELS mel/ChangeLog -MU_FILES = mu/*.el mu/MU-ELS mu/ChangeLog +MU_FILES = mu/MU-ELS mu/*.el mu/ChangeLog -TL_FILES = tl/README.en tl/Makefile tl/mk-tl tl/TL-ELS \ - tl/*.el tl/*.bdf \ - tl/doc/*.ol tl/doc/*.tex tl/doc/*.texi tl/ChangeLog +TL_FILES = tl/README.en tl/Makefile tl/mk-tl tl/TL-ELS \ + tl/*.el tl/doc/*.ol tl/doc/*.tex tl/doc/*.texi tl/ChangeLog -EMU_FILES = emu/EMU-ELS emu/*.el emu/ChangeLog +BITMAP_FILES = bitmap-mule/BITMAP-* bitmap-mule/Makefile \ + bitmap-mule/*.el bitmap-mule/*.bdf \ + bitmap-mule/README.* bitmap-mule/ChangeLog + +EMU_FILES = emu/EMU-ELS emu/*.el emu/ChangeLog + +SINFO_FILES = sinfo/SINFO-* sinfo/Makefile \ + sinfo/*.dtd sinfo/*.el sinfo/*-mapping sinfo/ChangeLog FILES = $(TM_FILES) $(TM_MUA_FILES) $(MEL_FILES) $(MU_FILES) \ - $(TL_FILES) $(EMU_FILES) + $(TL_FILES) $(BITMAP_FILES) $(EMU_FILES) $(SINFO_FILES) elc: - $(EMACS) $(FLAGS) -l inst-tm -f compile-tm $(PREFIX) $(EXEC_PREFIX) + $(EMACS) $(FLAGS) -l TM-MK -f compile-tm $(PREFIX) $(EXEC_PREFIX) # $(SHELL) .gnus-compile install-elc: elc - $(EMACS) $(FLAGS) -l inst-tm -f install-tm $(PREFIX) $(EXEC_PREFIX) + $(EMACS) $(FLAGS) -l TM-MK -f install-tm $(PREFIX) $(EXEC_PREFIX) all: $(UTILS) $(DVI) elc @@ -101,7 +107,7 @@ ps: ol2 install: $(UTILS) methods install-elc - $(EMACS) $(FLAGS) -l inst-tm -f install-execs $(PREFIX) $(EXEC_PREFIX) + $(EMACS) $(FLAGS) -l TM-MK -f install-execs $(PREFIX) $(EXEC_PREFIX) clean: diff --git a/README.en b/README.en index 1e92bc7..223903e 100644 --- a/README.en +++ b/README.en @@ -1,7 +1,7 @@ [README for tm (English Version)] by MORIOKA Tomohiko and KOBAYASHI Shuhei -$Id: README.en,v 7.24 1996/10/14 09:33:14 morioka Exp $ +$Id: README.en,v 7.25 1996/12/02 16:07:55 morioka Exp $ 1 What's tm? @@ -55,11 +55,12 @@ $Id: README.en,v 7.24 1996/10/14 09:33:14 morioka Exp $ - tm-ew-e.el : MIME encoded-word encoder - tm-def : definition module for tm - tm-MUAs : MIME extender for MUAs - - tm-mh-e : tm-MUA for mh-e - - tm-gnus : tm-MUA for GNUS - - tm-rmail : tm-MUA for RMAIL - - tm-vm : tm-MUA for vm - - tm-mail : tm-MUA library module for mail-mode + - tm-mh-e : tm-MUA for mh-e + - gnus-mime : tm-MUA for Gnus + - tm-gnus : tm-MUA for GNUS + - tm-rmail : tm-MUA for RMAIL + - tm-vm : tm-MUA for vm + - tm-mail : tm-MUA library module for mail-mode - mime-setup: set up module for MIME - tm-setup: set up only reading @@ -74,21 +75,7 @@ $Id: README.en,v 7.24 1996/10/14 09:33:14 morioka Exp $ please modify the variables `PREFIX' and `EXEC_PREFIX'. -4.2 tm-gnus (optional) - - If you use optional GNUS or Gnus, which is not included in the Emacs -distribution, you must edit the following files before running make. - - If you use Emacs 18.* and GNUS 3.*, please edit tm/gnus/g3-path. - - If you use Emacs 18.* and GNUS 4.*, please edit tm/gnus/g4-path. - - If you use Gnus 5.[01].*, please edit tm/gnus/g5-path. - - If you use Gnus 5.2.*, please edit tm/gnus/s-path. - - -4.3 edit external methods (optional) +4.2 edit external methods (optional) You can edit external methods in `tm/methods/' directory for your environment. @@ -107,7 +94,7 @@ ftp://thumper.bellcore.com/pub/nsb). If you don't have the metamail package, please modify tmdecode to use decode-b instead of mmencode. -4.4 make +4.3 make Run `make all'. @@ -117,7 +104,7 @@ package, please modify tmdecode to use decode-b instead of mmencode. % make all EMACS=mule -4.5 install +4.4 install Run `make install'. @@ -132,25 +119,24 @@ package, please modify tmdecode to use decode-b instead of mmencode. Please insert `(load "mime-setup")' in ~/.emacs. -6.1 automatic MIME preview support +6.1 gnus-mime - tm-gnus provides automatic MIME preview feature for GNUS 3.15 or -later, Gnus 5.0.*, Gnus 5.1, and Gnus 5.2. + gnus-mime provides automatic MIME preview feature for Gnus. If you don't want to use automatic MIME preview feature, please insert in ~/.emacs: - (setq tm-gnus/automatic-mime-preview nil) + (setq gnus-show-mime nil) - In addition, Gnus 5.2 has automatic MIME preview supporting feature. -Of course, tm-gnus provides this feature for other GNUS and Gnus, but -it is unnatural. + In addition, Gnus 5.2 is designed to support automatic MIME preview +feature. Of course, gnus-mime provides this feature for Gnus 5.0.* +and Gnus 5.1.*, but it is unnatural. - When automatic MIME preview mode, GNUS and Gnus do MIME processing -if a message has a Mime-Version field. If it does not have one, GNUS -and Gnus does not do MIME processing, in default. + When automatic MIME preview mode, Gnus do MIME processing if a +message has a Mime-Version field. If it does not have one, Gnus does +not do MIME processing, in default. - Gnus 5.0.*, 5.1 and Gnus 5.2 have a variable `gnus-strict-mime'. If + Gnus 5.0.*, 5.1 and Gnus 5.2 have a variable `gnus-strict-mime'. If you insert (setq gnus-strict-mime nil) @@ -159,12 +145,23 @@ Gnus does MIME processing even if a message does not have a Mime-Version field. In Gnus 5.2, if `gnus-strict-mime' is not nil, variable -`gnus-decode-encoded-word-method' is called. tm-gnus uses it to decode -RFC 1522 encoded-words. So it is not necessary to reset +`gnus-decode-encoded-word-method' is called. gnus-mime uses it to +decode RFC 2047 encoded-words. So it is not necessary to reset `gnus-strict-mime'. -6.2 VM +6.2 tm-gnus + + tm-gnus provides automatic MIME preview feature for GNUS 3.15 or +later. + + If you don't want to use automatic MIME preview feature, please +insert in ~/.emacs: + + (setq tm-gnus/automatic-mime-preview nil) + + +6.3 VM If you use vm, please insert `(require 'tm-vm)' in ~/.vm. @@ -172,7 +169,7 @@ RFC 1522 encoded-words. So it is not necessary to reset (require 'tm-vm) *after* (bbdb-insinuate-vm). -6.3 PGP +6.4 PGP If you have the PGP and Mailcrypt packages, you can use PGP with MIME. Currently, PGP/MIME (RFC 2015) and draft-kazu-pgp-mime-00.txt @@ -223,7 +220,7 @@ please insert into ~/.emacs: ====================================================================== -6.4 code sample for hilit19 +6.5 code sample for hilit19 ====================================================================== (cond (window-system @@ -263,7 +260,7 @@ please insert into ~/.emacs: ====================================================================== -6.5 code sample for browse-url +6.6 code sample for browse-url If you have browse-url.el (included in Gnus 5.*, September Gnus and Emacs 19.30 or later), you can use URL button in @@ -338,7 +335,6 @@ and its mirrors: 10 TODO -- MUA specific key binding system for mime/viewer-mode - better identification calculus system as successor of atype system - development of internal method for message/external-body based on tm-ftp diff --git a/TM-CFG b/TM-CFG index 7d7b37b..a02be28 100644 --- a/TM-CFG +++ b/TM-CFG @@ -1,6 +1,6 @@ ;;; -*-Emacs-Lisp-*- ;;; -;;; $Id: TM-CFG,v 7.24 1996/11/15 12:12:47 morioka Exp $ +;;; $Id: TM-CFG,v 7.26 1996/11/27 11:45:46 morioka Exp $ ;;; (defvar default-load-path load-path) @@ -9,7 +9,8 @@ (lambda (path) (expand-file-name path (getenv "PWD")) )) - '("." "../emu" "../tl" "../mu" "../mel" + '("." "../emu" "../tl" "../bitmap-mule" + "../mu" "../mel" "../tm-mh-e" "../gnus-mime" "../tm-gnus" "../tm-mail" "../tm-vm") ) @@ -105,9 +106,6 @@ (expand-file-name "../../../.." exec-directory) )) -;; Please specify tm package prefix [optional] -(setq TM_PACKAGE_PREFIX "") - ;; Please specify tl prefix [optional] ;;(setq TL_PREFIX "tl") (setq TL_PREFIX @@ -115,6 +113,9 @@ "tl" "")) +;; Please specify prefix for ``bitmap-mule'' [optional] +(setq BITMAP_PREFIX "bitmap") + ;; Please specify MU prefix [optional] (setq MU_PREFIX "mu") @@ -128,19 +129,20 @@ ;; ;; = /DATA_PREFIX// ;; /mime-setup.{el|elc} -;; /// --- tl lisp files -;; /// --- MU lisp files -;; /// --- MEL lisp files -;; /// --- tm lisp files +;; // --- tl lisp files +;; // --- bitmap lisp files +;; // --- MU lisp files +;; // --- MEL lisp files +;; // --- tm lisp files ;; ;; For example, if = "/usr/local" and you use Emacs 19.34, ;; ;; = /usr/local/share/emacs/site-lisp/ ;; /usr/local/share/emacs/site-lisp/mime-setup.{el|elc} -;; /usr/local/share/emacs/site-lisp/ --- tl lisp files -;; /usr/local/share/emacs/site-lisp/mu/ --- MU lisp files -;; /usr/local/share/emacs/site-lisp/mel/ --- MEL lisp files -;; /usr/local/share/emacs/site-lisp/tm/ --- tm lisp files +;; /usr/local/share/emacs/site-lisp/ --- tl lisp files +;; /usr/local/share/emacs/site-lisp/mu/ --- MU lisp files +;; /usr/local/share/emacs/site-lisp/mel/ --- MEL lisp files +;; /usr/local/share/emacs/site-lisp/tm/ --- tm lisp files ;; ;; For example, if = "~/" and you use XEmacs, ;; @@ -178,50 +180,51 @@ ;; Please specify mime-setup.{el|elc} install path. (setq SETUP_FILE_DIR LISPDIR) -(setq TM_LISPDIR (expand-file-name TM_PACKAGE_PREFIX LISPDIR)) - -(setq TL_DIR (expand-file-name TL_PREFIX TM_LISPDIR)) -(setq MU_DIR (expand-file-name MU_PREFIX TM_LISPDIR)) -(setq MEL_DIR (expand-file-name MEL_PREFIX TM_LISPDIR)) -(setq TM_KERNEL_DIR (expand-file-name TM_PREFIX TM_LISPDIR)) -(setq TM_MHE_DIR TM_KERNEL_DIR) -(setq TM_GNUS_DIR TM_KERNEL_DIR) -(setq Gnus_MIME_DIR TM_KERNEL_DIR) -(setq TM_MAIL_DIR TM_KERNEL_DIR) -(setq TM_VM_DIR TM_KERNEL_DIR) +(setq TL_DIR (expand-file-name TL_PREFIX LISPDIR)) +(setq BITMAP_DIR (expand-file-name BITMAP_PREFIX LISPDIR)) +(setq MU_DIR (expand-file-name MU_PREFIX LISPDIR)) +(setq MEL_DIR (expand-file-name MEL_PREFIX LISPDIR)) +(setq TM_KERNEL_DIR (expand-file-name TM_PREFIX LISPDIR)) +(setq TM_MHE_DIR TM_KERNEL_DIR) +(setq TM_GNUS_DIR TM_KERNEL_DIR) +(setq Gnus_MIME_DIR TM_KERNEL_DIR) +(setq TM_MAIL_DIR TM_KERNEL_DIR) +(setq TM_VM_DIR TM_KERNEL_DIR) (cond ((member LISPDIR default-load-path) - (if (string-equal TM_PACKAGE_PREFIX "") - (setq TL_RELATIVE_DIR TL_PREFIX - MU_RELATIVE_DIR MU_PREFIX - MEL_RELATIVE_DIR MEL_PREFIX - TM_KERNEL_RELATIVE_DIR TM_PREFIX - ) - (setq TL_RELATIVE_DIR - (concat (file-name-as-directory TM_PACKAGE_PREFIX) TL_PREFIX)) - (setq MU_RELATIVE_DIR - (concat (file-name-as-directory TM_PACKAGE_PREFIX) MU_PREFIX)) - (setq MEL_RELATIVE_DIR - (concat (file-name-as-directory TM_PACKAGE_PREFIX) MEL_PREFIX)) - (setq TM_KERNEL_RELATIVE_DIR - (concat (file-name-as-directory TM_PACKAGE_PREFIX) TM_PREFIX)) - )) + (setq TL_RELATIVE_DIR TL_PREFIX) + (setq BITMAP_RELATIVE_DIR BITMAP_PREFIX) + (setq MU_RELATIVE_DIR MU_PREFIX) + (setq MEL_RELATIVE_DIR MEL_PREFIX) + (setq TM_KERNEL_RELATIVE_DIR TM_PREFIX) + ) ((string-match (concat "^" (regexp-quote (expand-file-name "~/"))) LISPDIR) - (setq TL_RELATIVE_DIR (concat "~/" (file-relative-name TL_DIR "~/"))) - (setq MU_RELATIVE_DIR (concat "~/" (file-relative-name MU_DIR "~/"))) - (setq MEL_RELATIVE_DIR (concat "~/" (file-relative-name MEL_DIR "~/"))) + (setq TL_RELATIVE_DIR + (concat "~/" (file-relative-name TL_DIR "~/")) + ) + (setq BITMAP_RELATIVE_DIR + (concat "~/" (file-relative-name BITMAP_DIR "~/")) + ) + (setq MU_RELATIVE_DIR + (concat "~/" (file-relative-name MU_DIR "~/")) + ) + (setq MEL_RELATIVE_DIR + (concat "~/" (file-relative-name MEL_DIR "~/")) + ) (setq TM_KERNEL_RELATIVE_DIR - (concat "~/" (file-relative-name TM_KERNEL_DIR "~/"))) + (concat "~/" (file-relative-name TM_KERNEL_DIR "~/")) + ) ) (t - (setq TL_RELATIVE_DIR TL_DIR) - (setq MU_RELATIVE_DIR MU_DIR) - (setq MEL_RELATIVE_DIR MEL_DIR) - (setq TM_KERNEL_RELATIVE_DIR TM_KERNEL_DIR) + (setq TL_RELATIVE_DIR TL_DIR) + (setq BITMAP_RELATIVE_DIR BITMAP_DIR) + (setq MU_RELATIVE_DIR MU_DIR) + (setq MEL_RELATIVE_DIR MEL_DIR) + (setq TM_KERNEL_RELATIVE_DIR TM_KERNEL_DIR) )) -(setq TM_MHE_RELATIVE_DIR TM_KERNEL_RELATIVE_DIR) -(setq TM_GNUS_RELATIVE_DIR TM_KERNEL_RELATIVE_DIR) +(setq TM_MHE_RELATIVE_DIR TM_KERNEL_RELATIVE_DIR) +(setq TM_GNUS_RELATIVE_DIR TM_KERNEL_RELATIVE_DIR) (setq TM_GNUS_INSTALL_FORMAT "cd gnus; PWD=`pwd` make install-19 EMACS=%s TMDIR19=%s") diff --git a/TM-MK b/TM-MK new file mode 100644 index 0000000..36c4f07 --- /dev/null +++ b/TM-MK @@ -0,0 +1,173 @@ +;;; -*-Emacs-Lisp-*- +;;; +;;; $Id: TM-MK,v 7.43 1996/11/27 11:48:53 morioka Exp morioka $ +;;; + +(defun config-tm () + (let (prefix exec-prefix) + (setq prefix (car command-line-args-left)) + (and prefix + (not (string-equal "NONE" prefix)) + (progn + (defvar PREFIX prefix) + (setq command-line-args-left (cdr command-line-args-left)) + ) + (setq exec-prefix (car command-line-args-left)) + (progn + (defvar EXEC_PREFIX exec-prefix) + ;;(setq command-line-args-left (cdr command-line-args-left)) + ))) + (load-file "TM-CFG") + (load-file "../emu/EMU-ELS") + (load-file "../tl/TL-ELS") + (load-file "../bitmap-mule/BITMAP-ELS") + (load-file "../mu/MU-ELS") + (load-file "../mel/MEL-ELS") + (load-file "TM-ELS") + (load-file "../tm-mh-e/TMH-ELS") + (load-file "../tm-mail/TMAIL-ELS") + (load-file "../tm-vm/TM-VM-ELS") + (princ (format "PREFIX=%s\tEXEC_PREFIX=%s\n" PREFIX EXEC_PREFIX)) + ) + +(defun directory= (dir1 dir2) + (string= (file-name-as-directory dir1)(file-name-as-directory dir2)) + ) + +(defun make-mime-setup (lisp-dir + tl-path bitmap-path mu-path mel-path tm-path) + (let ((buf (find-file "mime-setup.el.in"))) + (goto-char (point-min)) + (re-search-forward "^;;; Code:\n" nil t) + (setq buffer-read-only nil) + + ;; generate tl setting + (let ((tl-absolute-path (expand-file-name tl-path lisp-dir))) + (if (MEMBER tl-absolute-path default-load-path + :test (function directory=)) + (insert "\n(require \'tl-misc)") + (insert + (format " + +\(let ((load-path + (cons \"%s\" + load-path))) + (require \'tl-misc) + ) +\(add-path \"%s\")" tl-absolute-path tl-path)) + )) + + ;; generate MU load-path setting + (and bitmap-modules + (or (MEMBER (expand-file-name bitmap-path lisp-dir) + default-load-path + :test (function directory=)) + (insert (format "\n(add-path \"%s\")" bitmap-path)) + )) + + ;; generate MU load-path setting + (or (MEMBER (expand-file-name mu-path lisp-dir) + default-load-path + :test (function directory=)) + (insert (format "\n(add-path \"%s\")" mu-path)) + ) + + ;; generate MEL load-path setting + (or (MEMBER (expand-file-name mel-path lisp-dir) + default-load-path + :test (function directory=)) + (insert (format "\n(add-path \"%s\")" mel-path)) + ) + + ;; generate tm load-path setting + (or (MEMBER (expand-file-name tm-path lisp-dir) + default-load-path + :test (function directory=)) + (insert (format "\n(add-path \"%s\")" tm-path)) + ) + + ;; generate tm external-methods path setting + (or (string= METHOD_DIR exec-directory) + (insert + (format "\n(defvar mime-viewer/external-progs %s)" + (let ((dir (file-relative-name METHOD_DIR data-directory))) + (if (< (length dir) (length METHOD_DIR)) + (concat "\n (expand-file-name \"" + dir "\" data-directory)") + (setq dir (file-relative-name METHOD_DIR + (expand-file-name "~/"))) + (if (< (length dir) (length METHOD_DIR)) + (concat "\n (expand-file-name \"~/" + dir "\")") + (concat "\"" METHOD_DIR "\"") + ))) + )) + ) + (write-file "mime-setup.el") + )) + +(defun compile-tm () + (config-tm) + (print load-path) + (require 'mel-u) + (require 'tm-edit) + (load "rmailsum") + (require 'tm-mh-e) + (make-mime-setup LISPDIR + TL_RELATIVE_DIR BITMAP_RELATIVE_DIR + MU_RELATIVE_DIR MEL_RELATIVE_DIR + TM_KERNEL_RELATIVE_DIR) + (compile-elisp-modules emu-modules "../emu") + (compile-elisp-modules tl-modules "../tl") + (compile-elisp-modules bitmap-modules "../bitmap-mule") + (compile-elisp-modules mu-modules-to-compile "../mu") + (compile-elisp-modules mel-modules "../mel") + (compile-elisp-modules tm-modules-to-compile ".") + (compile-elisp-modules tm-mh-e-modules "../tm-mh-e") + (compile-elisp-module 'mime-setup ".") + (require 'gnus) + (cond ((featurep 'gnus-ems) + (load "../gnus-mime/Gnus-MIME-ELS") + (compile-elisp-modules gnus-mime-modules-to-compile "../gnus-mime") + ) + (t + (load "../tm-gnus/TGNUS-ELS") + (compile-elisp-modules tm-gnus-modules-to-compile "../tm-gnus") + )) + (compile-elisp-modules tm-mail-modules "../tm-mail") + (compile-elisp-modules tm-vm-modules-to-compile "../tm-vm") + ) + +(defun install-tm () + (config-tm) + (princ (format "%s\n" emacs-version)) + (install-elisp-modules emu-modules "../emu" EMU_DIR) + (install-elisp-modules tl-modules "../tl" TL_DIR) + (install-elisp-modules bitmap-modules "../bitmap-mule" BITMAP_DIR) + (install-elisp-modules mu-modules "../mu" MU_DIR) + (install-elisp-modules mel-modules "../mel" MEL_DIR) + (install-elisp-modules tm-modules "." TM_KERNEL_DIR) + (install-elisp-modules tm-mh-e-modules "../tm-mh-e" TM_MHE_DIR) + ;;(install-tm-gnus) + (require 'gnus) + (cond ((featurep 'gnus-ems) + (load "../gnus-mime/Gnus-MIME-ELS") + (install-elisp-modules gnus-mime-modules + "../gnus-mime" Gnus_MIME_DIR) + ) + (t + (load "../tm-gnus/TGNUS-ELS") + (install-elisp-modules tm-gnus-modules "../tm-gnus" TM_GNUS_DIR) + )) + (install-elisp-modules tm-mail-modules "../tm-mail" TM_MAIL_DIR) + (install-elisp-modules tm-vm-modules "../tm-vm" TM_VM_DIR) + (install-elisp-modules '(mime-setup) "." SETUP_FILE_DIR) + ) + +(defun install-execs () + (config-tm) + (install-files BINS BIN_SRC_DIR BIN_DIR) + (install-files METHODS METHOD_SRC_DIR METHOD_DIR nil t) + ) + +;;; TM-MK ends here diff --git a/doc/tm-edit-en.info b/doc/tm-edit-en.info new file mode 100644 index 0000000..6c09eca --- /dev/null +++ b/doc/tm-edit-en.info @@ -0,0 +1,483 @@ +Info file: tm-edit-en.info, -*-Text-*- +produced by `texinfo-format-buffer' +from file `tm-edit-en.texi' +using `texinfmt.el' version 2.32 of 19 November 1993. + + + +File: tm-edit-en.info, Node: Top, Next: Introduction, Prev: (dir), Up: (dir) + +tm-edit 7.90 Reference Manual (English Version) +*********************************************** + + +This file documents tm-edit, a MIME composer for GNU Emacs. + +* Menu: + +* Introduction:: What is tm-edit? +* mime/editor-mode:: +* single-part operations:: +* enclosure operation:: +* other operations of mime/editor-mode:: +* transfer level:: +* header:: Using non-ASCII characters in header +* PGP:: +* Concept Index:: +* Function Index:: +* Variable Index:: + + + +File: tm-edit-en.info, Node: Introduction, Next: mime/editor-mode, Prev: Top, Up: Top + +What is tm-edit? +**************** + +*tm-edit* is a general MIME composer for GNU +Emacs. + +tm-edit is based on mime.el by UMEDA Masanobu +, who is famous as the author of GNUS. +tm-edit expands following points from `mime.el': + + * based on RFC 1521/1522 + * Content-Disposition field (*Note (tm-en)Content-Disposition::) (RFC + 1806) supports + * nested multi-part message (*Note (tm-en)multipart::) + * PGP (*Note PGP::) (PGP/MIME (RFC 2015) based on security multipart + (RFC 1847) and application/pgp based on traditional PGP) + * strength automatic specification for parameter of file type + + +In tm-MUA (*Note (tm-en)tm-MUA::), you can edit MIME message easily to +use tm-edit. + + + + +File: tm-edit-en.info, Node: mime/editor-mode, Next: single-part operations, Prev: Introduction, Up: Top + +mime/editor-mode +**************** + +*mime/editor-mode* is a minor mode to +compose MIME message. In this mode, *tag* represents various kinds of +data, you can edit multi part (*Note (tm-en)multipart::) message. + +There are 2 kinds of tags: + + * single-part tag + * multi-part tag + +single-part tag represents single part, this form is following: + + --[[TYPE/SUBTYPE;PARAMETERS][ENCODING] + OPTIONAL-FIELDS] + +TYPE/SUBTYPE and PARAMETERS indicates type/subtype and parameters of +Content-Type field (*Note (tm-en)Content-Type field::). TYPE/SUBTYPE is +required, PARAMETERS is optional. + +ENCODING indicates Content-Transfer-Encoding field. It is optional too. + +OPTIONAL-FIELDS is to represent another fields except Content-Type field +and Content-Transfer-Encoding field. + +multi-part tags represent multi part (*Note (tm-en)multipart::). They +consist of a pair of *multi-part beginning tag* and *multi-part ending +tag*. + +multi-part beginning tag's form is following: + + --<>-{ + +multi-part ending tag's form is following: + + --}-<> + +A region from multi-part beginning tag to multi-part ending tag is +called as *enclosure*. + + + + +File: tm-edit-en.info, Node: single-part operations, Next: enclosure operation, Prev: mime/editor-mode, Up: Top + +single-part operations +********************** + +Operations to make single-part are following: + +`C-c C-x C-t' + Insert single-part tag indicates text part. + +`C-c C-x C-i' + Insert file as a MIME attachment. + +`C-c C-x C-e' + Insert external part. + +`C-c C-x C-v' + Record audio input until `C-g' is pressed, and insert as a audio + part. (It requires /dev/audio in default.) + +`C-c C-x C-y' + Insert current (mail or news) message. (It is MUA depended.) + +`C-c C-x C-m' + Insert mail message. (It is MUA depended.) + +`C-c C-x C-w, C-c C-x C-s' + Insert signature. + +`C-c C-x C-k' + Insert PGP (*Note PGP::) public key. (It requires Mailcrypt + package.) + +`C-c C-x t' + Insert any single-part tag. + + + + + + +File: tm-edit-en.info, Node: enclosure operation, Next: other operations of mime/editor-mode, Prev: single-part operations, Up: Top + +enclosure operation +******************* + +Operations to make enclosure are following: + +`C-c C-x a' + Enclose specified region as multipart/alternative. + +`C-c C-x p' + Enclose specified region as multipart/parallel. + +`C-c C-x m' + Enclose specified region as multipart/mixed. + +`C-c C-x d' + Enclose specified region as multipart/digest. + +`C-c C-x s' + Digital-sign to specified region. (cf. *Note PGP::) + +`C-c C-x e' + Encrypt to specified region. (cf. *Note PGP::) + +`C-c C-x q' + avoid to encode tags in specified region. In other words, tags is + interpreted as such string. (In current version, it may be + incomplete. Maybe PGP-signature does not work for this enclosure.) + + + + + + +File: tm-edit-en.info, Node: other operations of mime/editor-mode, Next: transfer level, Prev: enclosure operation, Up: Top + +other operations of mime/editor-mode +************************************ + +There are another operations in mime/editor-mode. + +`C-c C-c' + Send current editing message. + +`C-c C-x C-p' + Preview current editing message. (*Note + (tm-view-en)mime/viewer-mode::) + +`C-c C-x C-z' + Exit mime/editor-mode. (M-x mime/edit-again is available to + reedit.) + +`C-c C-x ?' + Display help message. + +`C-c C-x /' + Set current editing message to enable automatic splitting or not. + Form of automatic split messages is message/partial. + +`C-c C-x 7' + Set 7bit (*Note (tm-en)7bit::) to transfer level (*Note transfer + level::). + +`C-c C-x 8' + Set 8bit (*Note (tm-en)8bit::) to transfer level (*Note transfer + level::). + +`C-c C-x v' + Set current editing message to digital-sign or not. (cf. *Note + PGP::) + +`C-c C-x h' + Set current editing message to encrypt or not. (cf. *Note PGP::) + + + + + + +File: tm-edit-en.info, Node: transfer level, Next: header, Prev: other operations of mime/editor-mode, Up: Top + +transfer level +************** + +Contents inserted in a message are represented by 7bit (*Note +(tm-en)7bit::), 8bit (*Note (tm-en)8bit::) or binary (*Note +(tm-en)binary::). + +If a message is translated by 7bit-through MTA (*Note (tm-en)MTA::), +there is no need to encode 7bit data, but 8bit and binary data must be +encoded to 7bit data. + +Similarly, if a message is translated by 8bit-through MTA, there is no +need to encode 7bit or 8bit data, but binary data must be encoded to +7bit or 8bit data. + +*[Memo]* + EBCDIC MTA breaks 7bit data, so in this case, 7bit data must be + encoded by base64. But I don't know EBCDIC. (^_^; + + Similarly, I wish ASCII-printable only MTA and code-conversion MTA + disappeared. (^_^; + + Maybe there are binary-through MTA, but I think it is not major. + +*transfer level* represents how range data is +available. tm-edit has a variable `mime-editor/transfer-level' to +represent transfer level. + + + -- Variable: mime-editor/transfer-level + + transfer level. + + If transfer level of a data is over it, a data is encoded to 7bit. + + Currently, 7 or 8 is available. Default value is 7. + + In extension plan, EBCDIC will be 5, ASCII printable only will be + 6, binary will be 9. But it will not be implemented. + + + +*[Memo]* + transfer level is only for body, not for header (*Note header::). + RFC 1521 extends RFC 822 (*Note (tm-en)RFC 822::) to use 8bit data + in body, but it requires to use us-ascii (*Note (tm-en)us-ascii::) + in header. + + + + + +File: tm-edit-en.info, Node: header, Next: PGP, Prev: transfer level, Up: Top + +Using non-ASCII characters in header +************************************ + +RFC 1522 (*Note (tm-en)RFC 1522::) defines representation of non-ASCII +characters in header. + +It is a format called as *encoded-word* (*Note (tm-en)encoded-word::), +it is available to represent every non-ASCII characters by 7bit (*Note +(tm-en)7bit::) to declare MIME charset (*Note (tm-en)MIME charset::). + + +* Menu: + +* evil setting in header:: If you can not allow encoded-word +* API about header:: Functions and variables about header + + + +File: tm-edit-en.info, Node: evil setting in header, Next: API about header, Prev: header, Up: header + +If you can not allow encoded-word +================================= + +It is wrong to use "raw" non-ASCII characters in header not to use +encoded-word. Because there are various kinds of coded character set +(*Note (tm-en)Coded character set::) in the Internet, so we can not +distinguish them if MIME charset (*Note (tm-en)MIME charset::) is not +declared. + +For example, we can not distinguish iso-8859-1 (*Note +(tm-en)iso-8859-1::) and iso-8859-2 (*Note (tm-en)iso-8859-2::) if MIME +charset is not declared. + +However you can not permit to use encoded-word, please set to following +variables: + + + -- Variable: mime/field-encoding-method-alist + + Association-list to specify field encoding method. Its key is + field-name, value is encoding method. + + field-name allows string or `t' meaning any fields. + + Encoding method allows following: `nil' means no-conversion, `mime' + means to convert as encoded-word, symbol represent MIME charset + means to convert as the coded character set instead of to convert + as encoded-word. + + field-name is searched from string. If it is not found, `t' is + used. + + Default value of `mime/field-encoding-method-alist' is following: + + (("X-Nsubject" . iso-2022-jp-2) + ("Newsgroups" . nil) + (t . mime) + )) + + +In addition, if you want to specify by coded character set instead of +field, please use `mime-eword/charset-encoding-alist'. (cf. *Note API +about header::) + + + + + +File: tm-edit-en.info, Node: API about header, Prev: evil setting in header, Up: header + +Functions and variables about header +==================================== + + -- Command: mime/encode-message-header &optional CODE-CONVERSION + + It translate non-ASCII characters in message header of current + buffer into network representation, such as encoded-words. + + If CODE-CONVERSION is non-`nil', field not encoded by encoded-word + is converted by `mime/field-encoding-method-alist'. + + + -- Function: mime/encode-field STRING + + It encodes STRING into encoded-words as a field. + + Long lines are folded. + + + -- Function: mime-eword/encode-string STRING &optional COLUMN MODE + + It encodes STRING into encoded-words. + + Long lines are folded. + + COLUMN specifies start column. If it is omitted, 0 is used. + + MODE specifies where STRING is in. Available values are `text', + `comment', `phrase'. If it is omitted, `phrase' is used. + + + -- Variable: mime-eword/charset-encoding-alist + + Association-list of symbol represent MIME charset vs. nil, `"B"' or + `"Q"'. + + `nil' means not to encode as encoded-word. `"B"' means to use + B-encoding. `"Q"' means to use Q-encoding. + + + + + +File: tm-edit-en.info, Node: PGP, Next: Concept Index, Prev: header, Up: Top + +PGP +*** + +tm-edit provides PGP encryption, signature and inserting public-key +features based on *PGP/MIME* (*Note (tm-en)PGP/MIME::) (RFC 2015) or +*PGP-kazu* (*Note (tm-en)PGP-kazu::) (draft-kazu-pgp-mime-00.txt). + +This feature requires pgp command and Mailcrypt package (*Note +(mailcrypt)::). + +If you want to use this feature, please set `pgp-elkins' or `pgp-kazu' +to variable `mimed-editor/signing-type' and variable +`mime-editor/encrypting-type'. + +If `pgp-elkins' is specified, PGP/MIME is used. If `pgp-kazu' is +specified, PGP-kazu is used. + + + -- Variable: mime-editor/signing-type + + Format of PGP signature. + + It allows `pgp-elkins' or `pgp-kazu'. + + Default value is `nil'. + + + -- Variable: mime-editor/encrypting-type + + Format of PGP encryption. + + It allows `pgp-elkins' or `pgp-kazu'. + + Default value is `nil'. + + + + + +File: tm-edit-en.info, Node: Concept Index, Next: Function Index, Prev: PGP, Up: Top + +Concept Index +************* + + +* Menu: + +* enclosure: mime/editor-mode. 42. +* encoded-word: header. 9. +* mime/editor-mode: mime/editor-mode. 5. +* multi-part beginning tag: mime/editor-mode. 30. +* multi-part ending tag: mime/editor-mode. 31. +* PGP-kazu: PGP. 8. +* PGP/MIME: PGP. 7. +* tag: mime/editor-mode. 7. +* tm-edit: Introduction. 5. +* transfer level: transfer level. 26. + + + +File: tm-edit-en.info, Node: Function Index, Next: Variable Index, Prev: Concept Index, Up: Top + +Function Index +************** + + +* Menu: + +* mime/encode-field: API about header. 16. +* mime/encode-message-header: API about header. 7. +* mime-eword/encode-string: API about header. 23. + + + +File: tm-edit-en.info, Node: Variable Index, Prev: Function Index, Up: Top + +Variable Index +************** + + +* Menu: + +* mime-editor/encrypting-type: PGP. 31. +* mime-editor/signing-type: PGP. 22. +* mime-editor/transfer-level: transfer level. 33. +* mime-eword/charset-encoding-alist: API about header. 35. +* mime/field-encoding-method-alist: evil setting in header. 21. diff --git a/doc/tm-edit-en.sgml b/doc/tm-edit-en.sgml new file mode 100644 index 0000000..3ee593b --- /dev/null +++ b/doc/tm-edit-en.sgml @@ -0,0 +1,448 @@ + + + +tm-edit 7.90 Reference Manual (English Version) +<author>MORIOKA Tomohiko <mail>morioka@jaist.ac.jp</mail> +<date>1996/10/11 + +<toc> +</head> + +<body> + +<abstract> +<p> +This file documents tm-edit, a MIME composer for GNU Emacs. +</abstract> + + +<h1> What is tm-edit? +<node> Introduction +<p> +<concept>tm-edit</concept> is a general MIME composer for GNU Emacs. +<p> +tm-edit is based on mime.el by UMEDA Masanobu +<mail>umerin@mse.kyutech.ac.jp</mail>, who is famous as the author of +GNUS. tm-edit expands following points from <file>mime.el</file>: + +<ul> +<li> +based on RFC 1521/1522 +<li> +<a file="tm-en" node="Content-Disposition">Content-Disposition +field</a> (RFC 1806) supports +<li> +nested <a file="tm-en" node="multipart">multi-part message</a> +<li> +<dref>PGP</dref> (PGP/MIME (RFC 2015) based on security multipart (RFC +1847) and application/pgp based on traditional PGP) +<li> +strength automatic specification for parameter of file type +</ul> + +<p> +In <dref file="tm-en">tm-MUA</dref>, you can edit MIME message easily +to use tm-edit. + + +<h1> mime/editor-mode +<node> mime/editor-mode +<p> +<concept>mime/editor-mode</concept> is a minor mode to compose MIME +message. In this mode, <concept>tag</concept> represents various +kinds of data, you can edit <a file="tm-en" node="multipart">multi +part</a> message. +<p> +There are 2 kinds of tags: + +<ul> +<li> single-part tag +<li> multi-part tag +</ul> +<p> +single-part tag represents single part, this form is following: + +<verb> + --[[TYPE/SUBTYPE;PARAMETERS][ENCODING] + OPTIONAL-FIELDS] +</verb> +<p> +TYPE/SUBTYPE and PARAMETERS indicates type/subtype and parameters of +<dref file="tm-en">Content-Type field</dref>. TYPE/SUBTYPE is +required, PARAMETERS is optional. +<p> +ENCODING indicates Content-Transfer-Encoding field. It is optional +too. +<p> +OPTIONAL-FIELDS is to represent another fields except Content-Type +field and Content-Transfer-Encoding field. +<p> +multi-part tags represent <a file="tm-en" node="multipart">multi +part</a>. They consist of a pair of <concept>multi-part beginning +tag</concept> and <concept>multi-part ending tag</concept>. +<p> +multi-part beginning tag's form is following: +<p> +<verb> + --<<TYPE>>-{ +</verb> +<p> +multi-part ending tag's form is following: +<p> +<verb> + --}-<<TYPE>> +</verb> +<p> +A region from multi-part beginning tag to multi-part ending tag is +called as <concept>enclosure</concept>. + + +<h1> single-part operations +<node> single-part operations +<p> +Operations to make single-part are following: + +<kl> +<kt>C-c C-x C-t +<kd> +Insert single-part tag indicates text part. +</kd> +<kt>C-c C-x C-i +<kd> +Insert file as a MIME attachment. +</kd> +<kt>C-c C-x C-e +<kd> +Insert external part. +</kd> +<kt>C-c C-x C-v +<kd> +Record audio input until <kbd>C-g</kbd> is pressed, and insert as a +audio part. (It requires /dev/audio in default.) +</kd> +<kt>C-c C-x C-y +<kd> +Insert current (mail or news) message. (It is MUA depended.) +</kd> +<kt>C-c C-x C-m +<kd> +Insert mail message. (It is MUA depended.) +</kd> +<dt><key>C-c C-x C-w</key>, <key>C-c C-x C-s</key> +<dd> +Insert signature. +</dd> +<kt>C-c C-x C-k +<kd> +Insert <dref>PGP</dref> public key. (It requires Mailcrypt package.) +</kd> +<kt>C-c C-x t +<kd> +Insert any single-part tag. +</kd> +</kl> + + +<h1> enclosure operation +<node> enclosure operation +<p> +Operations to make enclosure are following: + +<kl> +<kt>C-c C-x a +<kd> +Enclose specified region as multipart/alternative. +</kd> +<kt>C-c C-x p +<kd> +Enclose specified region as multipart/parallel. +</kd> +<kt>C-c C-x m +<kd> +Enclose specified region as multipart/mixed. +</kd> +<kt>C-c C-x d +<kd> +Enclose specified region as multipart/digest. +</kd> +<kt>C-c C-x s +<kd> +Digital-sign to specified region. <cf node="PGP"> +</kd> +<kt>C-c C-x e +<kd> +Encrypt to specified region. <cf node="PGP"> +<kt>C-c C-x q +<kd> +avoid to encode tags in specified region. In other words, tags is +interpreted as such string. (In current version, it may be +incomplete. Maybe PGP-signature does not work for this enclosure.) +</kl> + + +<h1> other operations of mime/editor-mode +<node> other operations of mime/editor-mode +<p> +There are another operations in mime/editor-mode. + +<kl> +<kt>C-c C-c +<kd> +Send current editing message. +</kd> +<kt>C-c C-x C-p +<kd> +Preview current editing message. (<ref file="tm-view-en" +node="mime/viewer-mode">) +</kd> +<kt>C-c C-x C-z +<kd> +Exit mime/editor-mode. (<key>M-x mime/edit-again</key> is available to +reedit.) +</kd> +<kt>C-c C-x ? +<kd> +Display help message. +</kd> +<kt>C-c C-x / +<kd> +Set current editing message to enable automatic splitting or not. +Form of automatic split messages is message/partial. +</kd> +<kt>C-c C-x 7 +<kd> +Set <dref file="tm-en">7bit</dref> to <dref>transfer level</dref>. +</kd> +<kt>C-c C-x 8 +<kd> +Set <dref file="tm-en">8bit</dref> to <dref>transfer level</dref>. +</kd> +<kt>C-c C-x v +<kd> +Set current editing message to digital-sign or not. <cf node="PGP"> +</kd> +<kt>C-c C-x h +<kd> +Set current editing message to encrypt or not. <cf node="PGP"> +</kl> + + +<h1> transfer level +<node> transfer level +<p> +Contents inserted in a message are represented by <dref +file="tm-en">7bit</dref>, <dref file="tm-en">8bit</dref> or <dref +file="tm-en">binary</dref>. +<p> +If a message is translated by 7bit-through <dref +file="tm-en">MTA</dref>, there is no need to encode 7bit data, but +8bit and binary data must be encoded to 7bit data. +<p> +Similarly, if a message is translated by 8bit-through MTA, there is no +need to encode 7bit or 8bit data, but binary data must be encoded to +7bit or 8bit data. +<p> +<memo> +EBCDIC MTA breaks 7bit data, so in this case, 7bit data must be +encoded by base64. But I don't know EBCDIC. (^_^; +<p> +Similarly, I wish ASCII-printable only MTA and code-conversion MTA +disappeared. (^_^; +<p> +Maybe there are binary-through MTA, but I think it is not major. +</memo> +<p> +<concept>transfer level</concept> represents how range data is +available. tm-edit has a variable +<code>mime-editor/transfer-level</code> to represent transfer level. + + +<defvar name="mime-editor/transfer-level"> +<p> +transfer level. +<p> +If transfer level of a data is over it, a data is encoded to 7bit. +<p> +Currently, 7 or 8 is available. Default value is 7. +<p> +In extension plan, EBCDIC will be 5, ASCII printable only will be 6, +binary will be 9. But it will not be implemented. +</defvar> + + +<memo> +transfer level is only for body, not for <a node="header">header</a>. +RFC 1521 extends <dref file="tm-en">RFC 822</dref> to use 8bit data in +body, but it requires to use <dref file="tm-en">us-ascii</dref> in +header. +</memo> + + +<h1> Using non-ASCII characters in header +<node> header +<p> +<dref file="tm-en">RFC 1522</dref> defines representation of non-ASCII +characters in header. +<p> +It is a format called as <a file="tm-en" +node="encoded-word"><concept>encoded-word</concept></a>, it is +available to represent every non-ASCII characters by <dref +file="tm-en">7bit</dref> to declare <dref file="tm-en">MIME +charset</dref>. + + +<h2> If you can not allow encoded-word +<node> evil setting in header +<p> +It is wrong to use ``raw'' non-ASCII characters in header not to use +encoded-word. Because there are various kinds of <a file="tm-en" +node="Coded character set">coded character set</a> in the Internet, so +we can not distinguish them if <dref file="tm-en">MIME charset</dref> +is not declared. +<p> +For example, we can not distinguish <dref +file="tm-en">iso-8859-1</dref> and <dref +file="tm-en">iso-8859-2</dref> if MIME charset is not declared. +<p> +However you can not permit to use encoded-word, please set to +following variables: + + +<defvar name="mime/field-encoding-method-alist"> +<p> +Association-list to specify field encoding method. Its key is +field-name, value is encoding method. +<p> +field-name allows string or <code>t</code> meaning any fields. +<p> +Encoding method allows following: <code>nil</code> means +no-conversion, <code>mime</code> means to convert as encoded-word, +symbol represent MIME charset means to convert as the coded character +set instead of to convert as encoded-word. +<p> +field-name is searched from string. If it is not found, +<code>t</code> is used. +<p> +Default value of <code>mime/field-encoding-method-alist</code> is +following: + +<lisp> +(("X-Nsubject" . iso-2022-jp-2) + ("Newsgroups" . nil) + (t . mime) + )) +</lisp> +</defvar> + +<p> +In addition, if you want to specify by coded character set instead of +field, please use <code>mime-eword/charset-encoding-alist</code>. +<cf node="API about header"> + + +<h2> Functions and variables about header +<node> API about header +<p> +<define type="Command" name="mime/encode-message-header"> +<opts> code-conversion +<p> +It translate non-ASCII characters in message header of current buffer +into network representation, such as encoded-words. +<p> +If <var>code-conversion</var> is non-<code>nil</code>, field not +encoded by encoded-word is converted by +<code>mime/field-encoding-method-alist</code>. +</define> + +<defun name="mime/encode-field"> +<args> string +<p> +It encodes <var>string</var> into encoded-words as a field. +<p> +Long lines are folded. +</defun> + +<defun name="mime-eword/encode-string"> +<args> string <opts> column mode +<p> +It encodes <var>string</var> into encoded-words. +<p> +Long lines are folded. +<p> +<var>column</var> specifies start column. If it is omitted, 0 is +used. +<p> +<var>mode</var> specifies where <var>string</var> is in. Available +values are <code>text</code>, <code>comment</code>, +<code>phrase</code>. If it is omitted, <code>phrase</code> is used. +</defun> + +<defvar name="mime-eword/charset-encoding-alist"> +<p> +Association-list of symbol represent MIME charset vs. nil, +<code>"B"</code> or <code>"Q"</code>. +<p> +<code>nil</code> means not to encode as encoded-word. +<code>"B"</code> means to use B-encoding. +<code>"Q"</code> means to use Q-encoding. +</defvar> + + +<h1> PGP +<node> PGP +<p> +tm-edit provides PGP encryption, signature and inserting public-key +features based on <a file="tm-en" +node="PGP/MIME"><concept>PGP/MIME</concept></a> (RFC 2015) or <a +file="tm-en" node="PGP-kazu"><concept>PGP-kazu</concept></a> +(draft-kazu-pgp-mime-00.txt). +<p> +This feature requires pgp command and <a file="mailcrypt">Mailcrypt +package</a>. +<p> +If you want to use this feature, please set <code>pgp-elkins</code> or +<code>pgp-kazu</code> to variable +<code>mimed-editor/signing-type</code> and variable +<code>mime-editor/encrypting-type</code>. +<p> +If <code>pgp-elkins</code> is specified, PGP/MIME is used. If +<code>pgp-kazu</code> is specified, PGP-kazu is used. + + +<defvar name="mime-editor/signing-type"> +<p> +Format of PGP signature. +<p> +It allows <code>pgp-elkins</code> or <code>pgp-kazu</code>. +<p> +Default value is <code>nil</code>. +</defvar> + +<defvar name="mime-editor/encrypting-type"> +<p> +Format of PGP encryption. +<p> +It allows <code>pgp-elkins</code> or <code>pgp-kazu</code>. +<p> +Default value is <code>nil</code>. +</defvar> + + +<h1> Concept Index +<node> Concept Index + +<cindex> + + +<h1> Function Index +<node> Function Index + +<findex> + + +<h1> Variable Index +<node> Variable Index + +<vindex> + +</body> diff --git a/doc/tm-edit-en.texi b/doc/tm-edit-en.texi index 7a369bd..b932eaa 100644 --- a/doc/tm-edit-en.texi +++ b/doc/tm-edit-en.texi @@ -1,47 +1,78 @@ -@c $Id: tm-edit-en.texi,v 3.0 1996/05/08 12:43:50 morioka Exp $ +\input texinfo.tex +@setfilename tm-edit-en.info +@settitle{tm-edit 7.90 Reference Manual (English Version)} +@titlepage +@title tm-edit 7.90 Reference Manual (English Version) +@author MORIOKA Tomohiko <morioka@@jaist.ac.jp> +@subtitle 1996/10/11 +@end titlepage +@node Top, Introduction, (dir), (dir) +@top tm-edit 7.90 Reference Manual (English Version) + +@ifinfo + +This file documents tm-edit, a MIME composer for GNU Emacs. +@end ifinfo -@node tm-edit, encoded-word, tm-view, Top -@comment node-name, next, previous, up -@chapter tm-edit -@cindex tm-edit +@menu +* Introduction:: What is tm-edit? +* mime/editor-mode:: +* single-part operations:: +* enclosure operation:: +* other operations of mime/editor-mode:: +* transfer level:: +* header:: Using non-ASCII characters in header +* PGP:: +* Concept Index:: +* Function Index:: +* Variable Index:: +@end menu -tm-edit is a general MIME viewer for GNU Emacs. +@node Introduction, mime/editor-mode, Top, Top +@chapter What is tm-edit? + +@cindex{tm-edit}@strong{tm-edit} is a general MIME composer for GNU +Emacs.@refill tm-edit is based on mime.el by UMEDA Masanobu -<umerin@@mse.kyutech.ac.jp>, who is famous as the author of GNUS. -tm-edit expands following points from mime.el: +<umerin@@mse.kyutech.ac.jp>, who is famous as the author of +GNUS. tm-edit expands following points from @file{mime.el}: @itemize @bullet -@item based on RFC 1521/1522 -@item Content-Disposition field (RFC 1806) supports -@item multi-part in multi-part -@item PGP -@item strength automatic specification for parameter of file type +@item +based on RFC 1521/1522 +@item +Content-Disposition field (@ref{(tm-en)Content-Disposition}) (RFC 1806) +supports +@item +nested multi-part message (@ref{(tm-en)multipart}) +@item +PGP (@ref{PGP}) (PGP/MIME (RFC 2015) based on security multipart (RFC +1847) and application/pgp based on traditional PGP) +@item +strength automatic specification for parameter of file type @end itemize -@menu -* mime/editor-mode:: -* single-part operations:: -* enclosure operation:: -* other operations of mime/editor-mode:: -@end menu +In tm-MUA (@ref{(tm-en)tm-MUA}), you can edit MIME message easily to use +tm-edit. -@node mime/editor-mode, single-part operations, tm-edit, tm-edit -@comment node-name, next, previous, up -@section mime/editor-mode -@cindex mime/editor-mode +@node mime/editor-mode, single-part operations, Introduction, Top +@chapter mime/editor-mode -@emph{mime/editor-mode} is a minor mode to compose MIME message. -In this mode, @emph{tag} represents various kinds of data, you can -edit multi-part message. +@cindex{mime/editor-mode}@strong{mime/editor-mode} is a minor mode to +compose MIME message. In this mode, @cindex{tag}@strong{tag} represents +various kinds of data, you can edit multi part (@ref{(tm-en)multipart}) +message.@refill -There are 2 kinds of @emph{tag}s: +There are 2 kinds of tags: @itemize @bullet -@item single-part tag -@item multi-part tag +@item + single-part tag +@item + multi-part tag @end itemize single-part tag represents single part, this form is following: @@ -52,36 +83,38 @@ single-part tag represents single part, this form is following: @end example TYPE/SUBTYPE and PARAMETERS indicates type/subtype and parameters of -Content-Type field. TYPE/SUBTYPE is required, PARAMETERS is optional. +Content-Type field (@ref{(tm-en)Content-Type field}). TYPE/SUBTYPE is +required, PARAMETERS is optional.@refill -ENCODING indicates Content-Transfer-Encoding field. It is optional too. +ENCODING indicates Content-Transfer-Encoding field. It is optional +too.@refill -OPTIONAL-FIELDS is to represent another fields except Content-Type -field and Content-Transfer-Encoding field. +OPTIONAL-FIELDS is to represent another fields except Content-Type field +and Content-Transfer-Encoding field.@refill -multi-part tags represent multi part. They consist of a pair of -@emph{multi-part beginning tag} and @emph{multi-part ending tag}. +multi-part tags represent multi part (@ref{(tm-en)multipart}). They +consist of a pair of @cindex{multi-part beginning tag}@strong{multi-part +beginning tag} and @cindex{multi-part ending tag}@strong{multi-part +ending tag}.@refill -@emph{multi-part beginning tag}'s form is following: +multi-part beginning tag's form is following:@refill @example --<<TYPE>>-@{ @end example -@emph{multi-part ending tag}'s form is following: +multi-part ending tag's form is following:@refill @example --@}-<<TYPE>> @end example A region from multi-part beginning tag to multi-part ending tag is -called as @emph{enclosure}. +called as @cindex{enclosure}@strong{enclosure}. -@node single-part operations, enclosure operation, mime/editor-mode, tm-edit -@comment node-name, next, previous, up -@section single-part operations -@cindex single-part +@node single-part operations, enclosure operation, mime/editor-mode, Top +@chapter single-part operations Operations to make single-part are following: @@ -96,8 +129,8 @@ Insert file as a MIME attachment. Insert external part. @item @key{C-c C-x C-v} -Record audio input until @key{C-g} is pressed, and insert as a audio -part. (It requires /dev/audio in default.) +Record audio input until @kbd{C-g} is pressed, and insert as a +audio part. (It requires /dev/audio in default.) @item @key{C-c C-x C-y} Insert current (mail or news) message. (It is MUA depended.) @@ -105,22 +138,21 @@ Insert current (mail or news) message. (It is MUA depended.) @item @key{C-c C-x C-m} Insert mail message. (It is MUA depended.) -@item @key{C-c C-x C-w, C-c C-x C-s} +@item @key{C-c C-x C-w}, @key{C-c C-x C-s} Insert signature. @item @key{C-c C-x C-k} -Insert PGP public key. (It requires Mailcrypt package.) +Insert PGP (@ref{PGP}) public key. (It requires Mailcrypt package.) @item @key{C-c C-x t} -Insert any single-part tag. +Insert any single-part tag. + @end table -@node enclosure operation, other operations of mime/editor-mode, single-part operations, tm-edit -@comment node-name, next, previous, up -@section enclosure operations -@cindex multi-part -@cindex enclosure + +@node enclosure operation, other operations of mime/editor-mode, single-part operations, Top +@chapter enclosure operation Operations to make enclosure are following: @@ -138,28 +170,22 @@ Enclose specified region as multipart/mixed. Enclose specified region as multipart/digest. @item @key{C-c C-x s} -Digital-sign to specified region. (*1) +Digital-sign to specified region. (cf. @ref{PGP}) @item @key{C-c C-x e} -Encrypt to specified region. (*1) -@end table +Encrypt to specified region. (cf. @ref{PGP}) -@b{[Notice]} -@enumerate -@item -It requires Mailcrypt package and pgp package. In addition, please set -symbol @code{pgp-elkins} or @code{pgp-kazu} to -variable @code{mime-editor/signing-type} and -@code{mime-editor/encrypting-type}. +@item @key{C-c C-x q} +avoid to encode tags in specified region. In other words, tags is +interpreted as such string. (In current version, it may be +incomplete. Maybe PGP-signature does not work for this enclosure.) + +@end table -@code{pgp-elkins} indicates draft-elkins-pem-pgp-02.txt, -@code{pgp-kazu} indicates draft-kazu-pgp-mime-00.txt. -@end enumerate -@node other operations of mime/editor-mode, , enclosure operation, tm-edit -@comment node-name, next, previous, up -@section Another operation in mime/editor-mode. +@node other operations of mime/editor-mode, transfer level, enclosure operation, Top +@chapter other operations of mime/editor-mode There are another operations in mime/editor-mode. @@ -168,7 +194,7 @@ There are another operations in mime/editor-mode. Send current editing message. @item @key{C-c C-x C-p} -Preview current editing message. +Preview current editing message. (@ref{(tm-view-en)mime/viewer-mode}) @item @key{C-c C-x C-z} Exit mime/editor-mode. (@key{M-x mime/edit-again} is available to @@ -177,25 +203,249 @@ reedit.) @item @key{C-c C-x ?} Display help message. -@item @key{M-x mime-editor/set-split} +@item @key{C-c C-x /} Set current editing message to enable automatic splitting or not. Form of automatic split messages is message/partial. -@item @key{M-x mime-editor/set-sign} -Set current editing message to digital-sign or not. (*1) +@item @key{C-c C-x 7} +Set 7bit (@ref{(tm-en)7bit}) to transfer level (@ref{transfer level}). + +@item @key{C-c C-x 8} +Set 8bit (@ref{(tm-en)8bit}) to transfer level (@ref{transfer level}). + +@item @key{C-c C-x v} +Set current editing message to digital-sign or not. (cf. @ref{PGP}) + +@item @key{C-c C-x h} +Set current editing message to encrypt or not. (cf. @ref{PGP}) -@item @key{M-x mime-editor/set-encrypt} -Set current editing message to encrypt or not. (*1) @end table -@b{[Notice]} -@enumerate -@item -It requires Mailcrypt package and pgp package. In addition, please set -symbol @code{pgp-elkins} or @code{pgp-kazu} to -variable @code{mime-editor/signing-type} and -@code{mime-editor/encrypting-type}. - -@code{pgp-elkins} indicates draft-elkins-pem-pgp-02.txt, -@code{pgp-kazu} indicates draft-kazu-pgp-mime-00.txt. -@end enumerate + + +@node transfer level, header, other operations of mime/editor-mode, Top +@chapter transfer level + +Contents inserted in a message are represented by 7bit +(@ref{(tm-en)7bit}), 8bit (@ref{(tm-en)8bit}) or binary +(@ref{(tm-en)binary}).@refill + +If a message is translated by 7bit-through MTA (@ref{(tm-en)MTA}), there +is no need to encode 7bit data, but 8bit and binary data must be encoded +to 7bit data.@refill + +Similarly, if a message is translated by 8bit-through MTA, there is no +need to encode 7bit or 8bit data, but binary data must be encoded to +7bit or 8bit data.@refill + +@noindent +@strong{[Memo]} +@quotation +EBCDIC MTA breaks 7bit data, so in this case, 7bit data must be +encoded by base64. But I don't know EBCDIC. (^_^; + +Similarly, I wish ASCII-printable only MTA and code-conversion MTA +disappeared. (^_^;@refill + +Maybe there are binary-through MTA, but I think it is not major. +@end quotation + +@cindex{transfer level}@strong{transfer level} represents how range data is +available. tm-edit has a variable +@code{mime-editor/transfer-level} to represent transfer level. + + +@defvar mime-editor/transfer-level + +transfer level.@refill + +If transfer level of a data is over it, a data is encoded to +7bit.@refill + +Currently, 7 or 8 is available. Default value is 7.@refill + +In extension plan, EBCDIC will be 5, ASCII printable only will be 6, +binary will be 9. But it will not be implemented. +@end defvar + + + +@noindent +@strong{[Memo]} +@quotation +transfer level is only for body, not for header (@ref{header}). RFC +1521 extends RFC 822 (@ref{(tm-en)RFC 822}) to use 8bit data in body, +but it requires to use us-ascii (@ref{(tm-en)us-ascii}) in header. +@end quotation + + + +@node header, PGP, transfer level, Top +@chapter Using non-ASCII characters in header + +RFC 1522 (@ref{(tm-en)RFC 1522}) defines representation of non-ASCII +characters in header.@refill + +It is a format called as @cindex{encoded-word}@strong{encoded-word} +(@ref{(tm-en)encoded-word}), it is available to represent every +non-ASCII characters by 7bit (@ref{(tm-en)7bit}) to declare MIME charset +(@ref{(tm-en)MIME charset}). + + +@menu +* evil setting in header:: If you can not allow encoded-word +* API about header:: Functions and variables about header +@end menu + +@node evil setting in header, API about header, header, header +@section If you can not allow encoded-word + +It is wrong to use ``raw'' non-ASCII characters in header not to use +encoded-word. Because there are various kinds of coded character set +(@ref{(tm-en)Coded character set}) in the Internet, so we can not +distinguish them if MIME charset (@ref{(tm-en)MIME charset}) is not +declared.@refill + +For example, we can not distinguish iso-8859-1 (@ref{(tm-en)iso-8859-1}) +and iso-8859-2 (@ref{(tm-en)iso-8859-2}) if MIME charset is not +declared.@refill + +However you can not permit to use encoded-word, please set to +following variables: + + +@defvar mime/field-encoding-method-alist + +Association-list to specify field encoding method. Its key is +field-name, value is encoding method.@refill + +field-name allows string or @code{t} meaning any fields.@refill + +Encoding method allows following: @code{nil} means no-conversion, +@code{mime} means to convert as encoded-word, symbol represent MIME +charset means to convert as the coded character set instead of to +convert as encoded-word.@refill + +field-name is searched from string. If it is not found, @code{t} is +used.@refill + +Default value of @code{mime/field-encoding-method-alist} is +following: + +@lisp +(("X-Nsubject" . iso-2022-jp-2) + ("Newsgroups" . nil) + (t . mime) + )) +@end lisp +@end defvar + + +In addition, if you want to specify by coded character set instead of +field, please use @code{mime-eword/charset-encoding-alist}. +(cf. @ref{API about header}) + + + +@node API about header, , evil setting in header, header +@section Functions and variables about header + +@deffn{Command} mime/encode-message-header &optional code-conversion + +It translate non-ASCII characters in message header of current buffer +into network representation, such as encoded-words.@refill + +If @var{code-conversion} is non-@code{nil}, field not encoded by +encoded-word is converted by @code{mime/field-encoding-method-alist}. +@end deffn + + +@defun mime/encode-field string + +It encodes @var{string} into encoded-words as a field.@refill + +Long lines are folded. +@end defun + + +@defun mime-eword/encode-string string &optional column mode + +It encodes @var{string} into encoded-words.@refill + +Long lines are folded.@refill + +@var{column} specifies start column. If it is omitted, 0 is +used.@refill + +@var{mode} specifies where @var{string} is in. Available values are +@code{text}, @code{comment}, @code{phrase}. If it is omitted, +@code{phrase} is used. +@end defun + + +@defvar mime-eword/charset-encoding-alist + +Association-list of symbol represent MIME charset vs. nil, @code{"B"} or +@code{"Q"}.@refill + +@code{nil} means not to encode as encoded-word. @code{"B"} means to use +B-encoding. @code{"Q"} means to use Q-encoding. +@end defvar + + + +@node PGP, Concept Index, header, Top +@chapter PGP + +tm-edit provides PGP encryption, signature and inserting public-key +features based on @cindex{PGP/MIME}@strong{PGP/MIME} +(@ref{(tm-en)PGP/MIME}) (RFC 2015) or @cindex{PGP-kazu}@strong{PGP-kazu} +(@ref{(tm-en)PGP-kazu}) (draft-kazu-pgp-mime-00.txt).@refill + +This feature requires pgp command and Mailcrypt package +(@ref{(mailcrypt)}).@refill + +If you want to use this feature, please set @code{pgp-elkins} or +@code{pgp-kazu} to variable @code{mimed-editor/signing-type} and +variable @code{mime-editor/encrypting-type}.@refill + +If @code{pgp-elkins} is specified, PGP/MIME is used. If +@code{pgp-kazu} is specified, PGP-kazu is used. + + +@defvar mime-editor/signing-type + +Format of PGP signature.@refill + +It allows @code{pgp-elkins} or @code{pgp-kazu}.@refill + +Default value is @code{nil}. +@end defvar + + +@defvar mime-editor/encrypting-type + +Format of PGP encryption.@refill + +It allows @code{pgp-elkins} or @code{pgp-kazu}.@refill + +Default value is @code{nil}. +@end defvar + + + +@node Concept Index, Function Index, PGP, Top +@chapter Concept Index + +@printindex cp + +@node Function Index, Variable Index, Concept Index, Top +@chapter Function Index + +@printindex fn + +@node Variable Index, , Function Index, Top +@chapter Variable Index + +@printindex vr +@bye diff --git a/doc/tm-en.info b/doc/tm-en.info index 7f7faa8..a27d576 100644 --- a/doc/tm-en.info +++ b/doc/tm-en.info @@ -49,65 +49,11 @@ Please read following about each topics: * Menu: -* What is MIME?:: -* How is MIME?:: * Glossary::  -File: tm-en.info, Node: What is MIME?, Next: How is MIME?, Prev: Introduction, Up: Introduction - -What is MIME? -============= - -*MIME* stands for *Multipurpose Internet Mail Extensions*, it is a -proposed internet standard for including content and headers other than -(ASCII) plain text in messages. - -Current MIME standard consists of RFC 1521 and RFC 1522. RFC 1521 -describes multipurpose content in message bodies, while RFC 1522 -describes multilingual characters in headers. - - - - -File: tm-en.info, Node: How is MIME?, Next: Glossary, Prev: What is MIME?, Up: Introduction - -How is MIME? -============ - -In multipurpose message side, MIME can represent various contents such -as images, sounds, videos, ... as against traditional Internet mail/news -message can represent only (us-ascii (*Note us-ascii::)) plain text. - -Interestingly, MIME can send "procedure", such as ftp (*Note FTP::), ftp -mail, file extraction, applying patch, ... - -# Of course, it has security problem. - -These various kinds of contents are defined by media types written in -*Content-Type* (*Note Content-Type field::) -field. Namely MIME message has information about content in header. So -if reader defines processes for each content-type (*Note -content-type::), he/she can display image, or play video or sound, or -get file by ftp, or extract file, ... only read the message. - -In addition, MIME message can represent message includes plural parts, -called *Multipart* (*Note multipart::) message. So it is possible to -include picture and sound in one message. - -MIME seems have philosophy of "declaration". In other words, MIME is a -message description language to represent various kinds of things uses -us-ascii (*Note us-ascii::) as its "alphabet". Encoded-word defined in -RFC 1522 (*Note encoded-word::) is same. - -In addition, MUA displays only what it can understand and ignore what -can not understand. - - - - -File: tm-en.info, Node: Glossary, Prev: How is MIME?, Up: Introduction +File: tm-en.info, Node: Glossary, Prev: Introduction, Up: Introduction Glossary ======== @@ -130,7 +76,7 @@ Glossary * Coded character set:: Coded character set$B!JId9f2=J8;z=89g!K(B, Character code$B!JJ8;zId9f!K(B * Code extension:: Code extension$B!JId9f3HD%!K(B * Content-Disposition:: Content-Disposition field -* content-type:: +* media type:: * Content-Type field:: * Emacs:: * encoded-word:: @@ -191,9 +137,12 @@ Glossary * RFC 934:: * RFC 1036:: * RFC 1153:: -* RFC 1521:: RFC 1521 * RFC 1557:: * RFC 1922:: +* RFC 2045:: +* RFC 2046:: +* RFC 2048:: +* RFC 2049:: * plain text:: * Security multipart:: * text/enriched:: @@ -209,25 +158,24 @@ File: tm-en.info, Node: 7bit, Next: 8bit, Prev: Glossary, Up: Glossary 7bit ---- -$B$3$3$G$O(B 0 $B$+$i(B 127 $B$N@0?t$r;X$7$^$9!#(B +*7bit* means any integer between 0 .. 127. -0 $B$+$i(B 127 $B$N@0?t$NNs$GI=8=$G$-$k$h$&$J(B data $B$r(B "7bit $B$N(B data" $B$H8F$S$^(B -$B$9!#(B +Any data represented by 7bit integers is called *7bit data*. -$B$^$?!"(B0 $B$+$i(B 31 $B$*$h$S(B 127 $B$GI=8=$5$l$k@)8fJ8;z$H(B 32 $B$GI=8=$5$l$k6uGr$H(B -33 $B$+$i(B 126 $B$GI=8=$5$l$k?^7AJ8;z$+$i$J$kJ8;zNs$N$3$H$r(B "7bit $B$NJ8;zNs(B" -$B$H8F$S$^$9!J$3$l$O(B ISO 2022 (*Note ISO 2022::) $B$N!V(B7 $BC10L7O!W$HF1MM$G$9!K!#(B +Textual string consisted of Control characters between 0 .. 31 and 127, +and space represented by 32, and graphic characters between 33 .. 236 +are called *7bit (textual) string*. -$BEAE}E*$J(B Internet $B$N(B MTA (*Note MTA::) $B$O(B 7bit $B$N(B data $B$rE>Aw$G$-$k$N$G!"(B -7bit $B$N(B data $B$O(B Quoted-Printable (*Note Quoted-Printable::) $B$d(B Base64 -(*Note Base64::) $B$H$$$C$?JQ49$r9T$o$J$/$F$b$=$N$^$^E>Aw$G$-$^$9!#(B +Traditional Internet MTA (*Note MTA::) can translate 7bit data, so it is +no need to translate by Quoted-Printable (*Note Quoted-Printable::) or +Base64 (*Note Base64::) for 7bit data. -$B$7$+$7!"(B7bit $B$G$"$l$P$I$s$J(B data $B$G$bNI$$$H$O$$$($^$;$s!#$J$<$J$i!"#19T(B -$B$ND9$5$,$"$^$j$KD9$$$H!"(BMTA $B$O$=$N(B message $B$rE>Aw$9$k$3$H$,$G$-$J$$$+$i(B -$B$G$9!#$A$J$_$K!"(BRFC 821 (*Note RFC 821::) $B$O#19T$O2~9TJ8;z$r=|$$$F(B 998 -byte $B0JFb$G$"$k$3$H$r5a$a$F$$$^$9!#$h$C$F!"$3$l0J>e$N9T$,4^$^$l$k2DG=@-(B -$B$N$"$k(B data, $BNc$($P!"(BPostscript $B$N(B data $B$J$I$O(B Quoted-Printable $BEy$G(B -encode$B$9$kI,MQ$,$"$j$^$9!#(B +However if there are too long lines, it can not translate by 7bit MTA +even if it is 7bit data. RFC 821 (*Note RFC 821::) and RFC 2045 (*Note +RFC 2045::) require lines in 7bit data must be less than 998 bytes. So +if a "7bit data" has a line more than 999 bytes, it is regarded as +binary (*Note binary::). For example, Postscript file should be encoded +by Quoted-Printable. @@ -237,40 +185,29 @@ File: tm-en.info, Node: 8bit, Next: 94 character set, Prev: 7bit, Up: Glossary 8bit ---- -$B$3$3$G$O(B 0 $B$+$i(B 255 $B$N@0?t$r;X$7$^$9!#(B +*8bit* means any integer between 0 .. 255. -0 $B$+$i(B 255 $B$N@0?t$NNs$GI=8=$G$-$k$h$&$J(B data $B$r(B "8bit $B$N(B data" $B$H8F$S$^(B -$B$9!#(B +Any data represented by 8bit integers is called *8bit data*. -$B$^$?!"(B0 $B$+$i(B 31, 127 $B$*$h$S(B 128 $B$+$i(B 159 $B$GI=8=$5$l$k@)8fJ8;z$H(B 32 $B$GI=(B -$B8=$5$l$k6uGr$H(B 33 $B$+$i(B 126 $B$H(B 160 $B$+$i(B 255 $B$GI=8=$5$l$k?^7AJ8;z$+$i$J$k(B -$BJ8;zNs$N$3$H$r(B "8bit $B$NJ8;zNs(B" $B$H8F$S$^$9!J$3$l$O(B ISO 2022 (*Note ISO -2022::) $B$N!V(B8 $BC10L7O!W$HF1MM$G$9!K!#(B +Textual string consisted of Control characters between 0 .. 31, 127, and +128 .. 159, and space represented by 32, and graphic characters between +33 .. 236 and 160 .. 255 are called *8bit (textual) string*. -iso-8859-1 (*Note iso-8859-1::) $B$d(B euc-kr (*Note euc-kr::) $B$H$$$C$?Id9f(B -$B2=J8;z=89g$O(B 8bit $B$NJ8;zNs$G$9!#(B +For example, iso-8859-1 (*Note iso-8859-1::) or euc-kr (*Note euc-kr::) +are coded-character-set represented by 8bit textual string. -$BEAE}E*$J(B Internet $B$N(B MTA (*Note MTA::) $B$O(B 7bit (*Note 7bit::) $B$N(B data $B$7(B -$B$+E>Aw$G$-$J$$$N$G!"$=$&$7$?(B MTA $B$r7PM3$9$k>l9g!"(BQuoted-Printable (*Note -Quoted-Printable::) $B$d(B Base64 (*Note Base64::) $B$H$$$C$?JQ49$r9T$o$J$/$F(B -$B$O$J$j$^$;$s!#(B +Traditional Internet MTA (*Note MTA::) can translate only 7bit (*Note +7bit::) data, so if a 8bit data will be translated such MTA, it must be +encoded by Quoted-Printable (*Note Quoted-Printable::) or Base64 (*Note +Base64::). -$B$7$+$7!":G6a$G$O(B 8bit $B$NJ8;zNs$r$=$N$^$^DL$9$3$H$,$G$-$k(B MTA $B$bEP>l$7$F(B -$B$-$?$N$G!"$=$N$^$^Aw$k$3$H$,$G$-$k>l9g$bA}$($F$-$^$7$?!#(B +However 8bit MTA are increasing today. -$B$7$+$7!"(B8bit $B$G$"$l$P$I$s$J(B data $B$G$bNI$$$H$O$$$($^$;$s!#$J$<$J$i!"#19T(B -$B$ND9$5$,$"$^$j$KD9$$$H!"(BMTA $B$O$=$N(B message $B$rE>Aw$9$k$3$H$,$G$-$J$$$+$i(B -$B$G$9!#$A$J$_$K!"(BRFC 821 $B$O#19T$O2~9TJ8;z$r=|$$$F(B 998 byte $B0JFb$G$"$k$3$H(B -$B$r5a$a$F$$$^$9!#$h$C$F!"$3$l0J>e$N9T$,4^$^$l$k2DG=@-$N$"$k(B data, $BNc$($P!"(B -Postscript $B$N(B data $B$J$I$O(B Quoted-Printable $BEy$G(B encode$B$9$kI,MQ$,$"$j$^$9!#(B - - -$B$^$?!"$3$&$7$?M}M3$+$i!"#19T$,(B 999 byte $B0J>e$N9T$,B8:_$9$k2DG=@-$N$"$k(B -data $B$O(B *binary* (*Note binary::) $B$H8F$V$3$H$K$7$^$9!#(B - -$B$A$J$_$K!"(B7bit $B$GI=8=$G$-$k(B data $B$O(B 8bit $B$G$bI=8=$G$-$^$9!#$h$C$F!"(B -"8bit" $B$H8@$C$?>l9g!"#19T$,(B 998 byte $B0J2<$NG$0U$N(B data $B$r;X$9$3$H$,$"$j(B -$B$^$9!#(B +However if there are too long lines, it can not translate by 8bit MTA +even if it is 8bit data. RFC 2045 (*Note RFC 2045::) require lines in +8bit data must be less than 998 bytes. So if a "8bit data" has a line +more than 999 bytes, it is regarded as binary (*Note binary::), so it +must be encoded by Base64 or Quoted-Printable. @@ -330,16 +267,17 @@ File: tm-en.info, Node: Base64, Next: binary, Prev: ASCII, Up: Glossary Base64 ------ -RFC 1521 (*Note RFC 1521::) $B$GDj5A$5$l$F$$$k(B MIME (*Note MIME::) $B$K$*$1(B -$B$k(B binary data (*Note binary::) $B$N(B network $B$G$NJQ49K!$N#1$D!#(B +*Base64* is a transfer encoding method of MIME +(*Note MIME::) defined in RFC 2045 (*Note RFC 2045::). -$B!X(B64 $B?J?t!Y$H$$$&0UL#$G!"(B3 byte $B$N(B data $B$r(B 0 $B$+$i(B 63 $B$N?t$rI=$9(B ASCII -(*Note ASCII::) 4 $BJ8;z$KJQ49$9$kJ}K!!#!J$b$7!"(B4 $BJ8;z$K$J$i$J$1$l$P(B -*pad* $B$H8F$P$l$k5M$aJ*$r$7$FD9$5$rD4@0$9$k!K(B +The encoding process represents 24-bit groups of input bits as output +strings of 4 encoded characters. Encoded characters represent integer 0 +.. 63 or *pad*. Base64 data must be 4 * n bytes, so +pad is used to adjust size. -$B$3$N(B 65 $B<oN`$NJ8;z$O(B ASCII $B$H(B EBCDIC $B$N6&DLItJ,$+$iA*$P$l$F$*$j!"(B -Internet $B0J30$N(B network $B$r7PM3$9$k>l9g$G$b0BA4$KE>Aw$G$-$k$h$&$K@_7W$5$l(B -$B$F$$$k!#(B +These 65 characters are subset of all versions of ISO 646, including +US-ASCII, and all versions of EBCDIC. So it is safe even if it is +translated by non-Internet gateways. @@ -454,7 +392,7 @@ Code extension$B!JId9f3HD%!K(B  -File: tm-en.info, Node: Content-Disposition, Next: content-type, Prev: Code extension, Up: Glossary +File: tm-en.info, Node: Content-Disposition, Next: media type, Prev: Code extension, Up: Glossary Content-Disposition field ------------------------- @@ -471,39 +409,37 @@ MIME::) $B$N3HD%$N#1$D!#(B  -File: tm-en.info, Node: content-type, Next: Content-Type field, Prev: Content-Disposition, Up: Glossary +File: tm-en.info, Node: media type, Next: Content-Type field, Prev: Content-Disposition, Up: Glossary -content-type ------------- +media type +---------- -MIME (*Note MIME::) $B$K$*$1$k(B part (*Note part::) $B$N<oN`!#(B -*type* $B$H(B *subtype* $B$+$i$J$k!#(B -RFC 1521 (*Note RFC 1521::) $B$GDj5A$5$l$F$$$k!#(B +*media type* specifies the nature of the data +in the body of MIME (*Note MIME::) entity (*Note entity::). It consists of +*type* and *subtype*. It is +defined in RFC 2046 (*Note RFC 2046::). -type $B$OI8=`$G$O(B *application*, -*audio*, *image*, -*message*, *multipart* -(*Note multipart::), *text*, -*video* $B$,Dj5A$5$l!"$=$l$>$l$K$O(B -application/octet-stream, audio/basic, image/jpeg, multipart/mixed -(*Note multipart/mixed::), text/plain (*Note text/plain::), video/mpeg -$B$J$I$N$5$^$6$^$J(B subtype $B$,Dj5A$5$l$F$$$k!#(B +Currently there are following types: -*[$BCm0U(B]* + * *text* + * *image* + * *audio* + * *video* + * *application* + * *multipart* (*Note multipart::) + * *message* - $B$3$3$G$O!"(Btext/plain $B$J$I$N(B type/subtype $B$NAH$r$7$P$7$P(B - *content-type/subtype* $B$H=q$/!#(B +And there are various subtypes, for example, application/octet-stream, +audio/basic, image/jpeg, multipart/mixed (*Note multipart/mixed::), +text/plain (*Note text/plain::), video/mpeg... -content-type $B$O!"(BRFC 1521 $B$GDj5A$5$l$F$$$k$b$N$K2C$($F!"EPO?$9$k$3$H$b$G(B -$B$-$k!#8=:_!"EPO?$5$l$F$$$k$b$N$O(B MEDIA TYPES -(ftp://ftp.isi.edu/in-notes/iana/assignments/media-types) $B$G;2>H$G$-$k!#(B +You can refer registered media types at MEDIA TYPES +(ftp://ftp.isi.edu/in-notes/iana/assignments/media-types). -$B$^$?!"(Btype $B$b$7$/$O(B subtype $B$K!"A0$K(B `x-' $B$rIU$1$?(B -*x-token* $B$rMQ$$$k$3$H$K$h$j!"EPO?$5$l$F$$$J$$$b(B -$B$N$r;dE*$KMQ$$$k$3$H$b$G$-$k!#$7$+$7!"EvA3$N$3$H$J$,$i!"$3$&$7$?;dE*$J(B -content-type $B$ONJ2r$rF@$?<T$N4V$G$7$+2r<a$G$-$J$$$N$GMxMQ$K$OCm0U$9$k$3(B -$B$H!#(B +In addition, you can use private type or subtype using +*x-token*, which as the prefix `x-'. However you +can not use them in public. (cf. *Note Content-Type field::) @@ -511,21 +447,21 @@ content-type $B$ONJ2r$rF@$?<T$N4V$G$7$+2r<a$G$-$J$$$N$GMxMQ$K$OCm0U$9$k$3(B  -File: tm-en.info, Node: Content-Type field, Next: Emacs, Prev: content-type, Up: Glossary +File: tm-en.info, Node: Content-Type field, Next: Emacs, Prev: media type, Up: Glossary Content-Type field ------------------ -Header field to represent information about part, such as content-type -(*Note content-type::), MIME charset (*Note MIME charset::). It is -defined in RFC 1521 (*Note RFC 1521::). +Header field to represent information about body, such as media type +(*Note media type::), MIME charset (*Note MIME charset::). It is +defined in RFC 2045 (*Note RFC 2045::). *[Memo]* Historically, Content-Type field was proposed in RFC 1049. In it, - Content-Type did not distinguish type and subtype. However RFC - 1521 parser may be able to accept RFC 1049 based Content-Type as - unknown type. + Content-Type did not distinguish type and subtype. However MIME + parser may be able to accept RFC 1049 based Content-Type as unknown + type. Content-Type field is defined as following: @@ -577,12 +513,12 @@ encoded-word ------------ Representation non ASCII (*Note ASCII::) characters in header. It is -defined in *RFC 1522*. +defined in *RFC 2047*. -[RFC 1522] K. Moore, "MIME (Multipurpose Internet Mail Extensions) - Part Two: Message Header Extensions for Non-ASCII Text", September - 1993, Standards Track. +[RFC 2047] K. Moore, "MIME (Multipurpose Internet Mail Extensions) + Part Three: Message Header Extensions for Non-ASCII Text", November + 1996, Standards Track (obsolete RFC 1521,1522,1590). @@ -865,13 +801,13 @@ File: tm-en.info, Node: iso-8859-1, Next: ISO 8859-2, Prev: ISO 8859-1, Up: Glos iso-8859-1 ---------- -$B@>2$=t8l$J$I$rI=8=$9$k$?$a$N(B MIME charset (*Note MIME charset::) $B$N#1$D!#(B +*iso-8859-1* is a MIME charset (*Note MIME charset::) for west-European languages written by Latin script. ISO 2022 (*Note ISO 2022::) $B$K4p$$$F!"(BASCII (*Note ASCII::) $B$K(B ISO 8859-1 (*Note ISO 8859-1::) $B$r(B 8bit (*Note 8bit::) $B$GId9f3HD%(B (*Note Code extension::)$B$7$F$$$k!#(B -RFC 1521 (*Note RFC 1521::) $B$GDj5A$5$l$F$$$k!#(B +It is defined in RFC 2046 (*Note RFC 2046::). @@ -898,13 +834,13 @@ File: tm-en.info, Node: iso-8859-2, Next: ISO 8859-3, Prev: ISO 8859-2, Up: Glos iso-8859-2 ---------- -$BEl2$=t8l$rI=8=$9$k$?$a$N(B MIME charset (*Note MIME charset::) $B$N#1$D!#(B +*iso-8859-2* is a MIME charset (*Note MIME charset::) for east-European languages written by Latin script. ISO 2022 (*Note ISO 2022::) $B$K4p$$$F!"(BASCII (*Note ASCII::) $B$K(B ISO 8859-2 (*Note ISO 8859-2::) $B$r(B 8bit (*Note 8bit::) $B$GId9f3HD%(B (*Note Code extension::)$B$7$F$$$k!#(B -RFC 1521 (*Note RFC 1521::) $B$GDj5A$5$l$F$$$k!#(B +It is defined in RFC 2046 (*Note RFC 2046::). @@ -959,13 +895,13 @@ File: tm-en.info, Node: iso-8859-5, Next: ISO 8859-6, Prev: ISO 8859-5, Up: Glos iso-8859-5 ---------- -$B%-%j%kJ8;z$rI=8=$9$k$?$a$N(B MIME charset (*Note MIME charset::) $B$N#1$D!#(B +*iso-8859-5* is a MIME charset (*Note MIME charset::) for Cyrillic script. ISO 2022 (*Note ISO 2022::) $B$K4p$$$F!"(BASCII (*Note ASCII::) $B$K(B ISO 8859-5 (*Note ISO 8859-5::) $B$r(B 8bit (*Note 8bit::) $B$GId9f3HD%(B (*Note Code extension::)$B$7$F$$$k!#(B -RFC 1521 (*Note RFC 1521::) $B$GDj5A$5$l$F$$$k!#(B +It is defined in RFC 2046 (*Note RFC 2046::). @@ -1005,13 +941,13 @@ File: tm-en.info, Node: iso-8859-7, Next: ISO 8859-8, Prev: ISO 8859-7, Up: Glos iso-8859-7 ---------- -$B%.%j%7%"8l$rI=8=$9$k$?$a$N(B MIME charset (*Note MIME charset::) $B$N#1$D!#(B +*iso-8859-7* is a MIME charset (*Note MIME charset::) for Greek script. ISO 2022 (*Note ISO 2022::) $B$K4p$$$F!"(BASCII (*Note ASCII::) $B$K(B ISO 8859-7 (*Note ISO 8859-7::) $B$r(B 8bit (*Note 8bit::) $B$GId9f3HD%(B (*Note Code extension::)$B$7$F$$$k!#(B -RFC 1947 $B$GDj5A$5$l$F$$$k!#(B +It is defined in RFC 1947. [iso-8859-7: RFC 1947] D. Spinellis, "Greek Character Encoding for @@ -1214,9 +1150,10 @@ File: tm-en.info, Node: message/rfc822, Next: method, Prev: message, Up: Glossar message/rfc822 -------------- -$BEAE}E*$J(B RFC 934 (*Note RFC 934::) $B$KBe$o$j!"(BRFC 822 (*Note RFC 822::) -$B$GDj5A$5$l$k(B mail $B$rI=$9(B MIME $B$N7A<0!#(BRFC 1521 (*Note RFC 1521::) $B$GDj5A(B -$B$5$l$F$$$k!#(B +*message/rfc822* indicates that the body +contains an encapsulated message, with the syntax of an RFC 822 (*Note +RFC 822::) message. It is the replacement of traditional RFC 934 (*Note +RFC 934::) encapsulation. It is defined in RFC 2046 (*Note RFC 2046::). @@ -1241,16 +1178,27 @@ File: tm-en.info, Node: MIME, Next: MIME charset, Prev: method, Up: Glossary MIME ---- -*Multipurpose -Internet Mail Extensions* $B$NN,$G!"(BInternet $B$N(B mail $B$d(B news $B$G(B us-ascii -plain text (*Note us-ascii::) $B0J30$NJ8;z$r;H$&$?$a$N(B RFC 822 (*Note RFC -822::) $B$KBP$9$k3HD%!#(B +MIME stands for *Multipurpose Internet Mail Extensions*, it is an +extension for RFC 822 (*Note RFC 822::). -RFC 1521 (*Note RFC 1521::) $B$H(B RFC 1522 (*Note encoded-word::) $B$GDj5A$5(B -$B$l$F$$$k!#(B +According to RFC 2045: -(cf. *Note What is MIME?::) +STD 11, RFC 822, defines a message representation protocol specifying +considerable detail about US-ASCII message headers, and leaves the +message content, or message body, as flat US-ASCII text. This set of +documents, collectively called the Multipurpose Internet Mail +Extensions, or MIME, redefines the format of messages to allow for + 1. textual message bodies in character sets other than US-ASCII, + 2. an extensible set of different formats for non-textual message + bodies, + 3. multi-part message bodies, and + 4. textual header information in character sets other than US-ASCII. + + +It is defined in RFC 2045 (*Note RFC 2045::), RFC 2046 (*Note RFC +2046::), RFC 2047 (*Note encoded-word::), RFC 2048 (*Note RFC 2048::) +and RFC 2049 (*Note RFC 2049::). @@ -1260,11 +1208,11 @@ File: tm-en.info, Node: MIME charset, Next: MTA, Prev: MIME, Up: Glossary MIME charset ------------ -Content-Type field (*Note Content-Type field::) $B$d(B encoded-word (*Note -encoded-word::) $B$N(B charset parameter $B$GMQ$$$i$l$kEPO?$5$l$?Id9f2=J8;z=8(B -$B9g(B (*Note Coded character set::)$B!#(B +Coded character set (*Note Coded character set::) used in Content-Type +field (*Note Content-Type field::) or charset parameter of encoded-word +(*Note encoded-word::). -RFC 1521 (*Note RFC 1521::) $B$GDj5A$5$l$F$$$k!#(B +It is defined in RFC 2045 (*Note RFC 2045::). iso-2022-jp (*Note iso-2022-jp::) $B$d(B euc-kr (*Note euc-kr::) $B$O$=$N#1$D!#(B $B!J$3$3$G$O!"(BMIME charset $B$OJ8;z=89g(B (*Note Character set::)$B$H6hJL$7$F>.(B @@ -1332,24 +1280,22 @@ File: tm-en.info, Node: multipart, Next: multipart/alternative, Prev: MULE, Up: Multipart --------- -$B#1$D$N(B message (*Note message::) $B$KJ#?t$N(B part $B$rF~$l$k$?$a$N(B MIME -(*Note MIME::) $B$K$*$1$kI=8=K!!"$b$7$/$O!"J#?t$N(B part $B$+$i$J$k(B message $B$r(B -$B;X$9!#(B(cf. *Note content-type::) +*multipart* means media type (*Note media type::) +to insert multiple entities (*Note entities::) in a single body. Or it +also indicates a message consists of multiple entities. -$B8=:_!"Dj5A$5$l$F$$$k(B *multipart* $B$H$7$F$O!"(BRFC 1521 (*Note RFC 1521::) -$B$GDj5A$5$l$?(B +There are following subtypes registered in RFC 2046 (*Note RFC 2046::): * multipart/mixed (*Note multipart/mixed::) * multipart/alternative (*Note multipart/alternative::) * multipart/digest (*Note multipart/digest::) * multipart/parallel (*Note multipart/parallel::) -$B$N$[$+(B RFC 1847 (*Note Security multipart::) $B$GDj5A$5$l$?(B +and registered in RFC 1847 (*Note Security multipart::): * multipart/signed (*Note multipart/signed::) * multipart/encrypted (*Note multipart/encrypted::) -$B$J$I$,$"$k!#(B @@ -1359,10 +1305,13 @@ File: tm-en.info, Node: multipart/alternative, Next: multipart/digest, Prev: mul multipart/alternative --------------------- -multipart (*Note multipart::) $B$N#1$D$G!"F1$8>pJs$r0[$C$?7A<0$GF~$l!"A*Br(B -$B;h$H$9$k>l9g$KMQ$$$k!#(B +*multipart/digest* is one of multipart +(*Note multipart::) media types. This type is syntactically identical +to multipart/mixed (*Note multipart/mixed::), but the semantics are +different. In particular, each of the body parts is an "alternative" +version of the same information. -(cf. *Note RFC 1521::) +(cf. *Note RFC 2046::) @@ -1373,16 +1322,17 @@ File: tm-en.info, Node: multipart/digest, Next: multipart/encrypted, Prev: multi multipart/digest ---------------- -multipart (*Note multipart::) $B$N#1$D$G!"4^$^$l$k(B part $B$N(B default $B$N(B -content-type (*Note content-type::) $B$,(B multipart/mixed (*Note -multipart/mixed::) $B$J$I$N>l9g(B text/plain (*Note text/plain::) $B$G$"$k$N$K(B -$BBP$7!"(B*multipart/digest*$B$G$O(B message/rfc822 (*Note message/rfc822::) $B$,(B -$BMQ$$$i$l$kE@$,0[$J$k!#(B +*multipart/digest* is one of multipart +(*Note multipart::) media types. This type is syntactically identical +to multipart/mixed (*Note multipart/mixed::), but the semantics are +different. In particular, in a digest, the default Content-Type value +for a body part is changed from text/plain (*Note text/plain::) to +message/rfc822 (*Note message/rfc822::). -$B$3$l$OEAE}E*$J(B RFC 1153 (*Note RFC 1153::) $B$K4p$E$/(B encapsulation (*Note -encapsulation::) $B$KBe$o$k$b$N$G$"$k!#(B +This is the replacement of traditional RFC 1153 (*Note RFC 1153::) based +encapsulation (*Note encapsulation::). -(cf. *Note RFC 1521::) +(cf. *Note RFC 2046::) @@ -1407,10 +1357,11 @@ File: tm-en.info, Node: multipart/mixed, Next: multipart/parallel, Prev: multipa multipart/mixed --------------- -multipart (*Note multipart::) $B$N<gMW$J(B subtype $B$G!"J#?t$N(B part $B$r=g=xIU(B -$B$1$FJB$Y$k>l9g$KMQ$$$k!#(B +Primary and default subtype of multipart (*Note multipart::), it is used +when the body parts are independent and need to be bundled in a +particular order. -(cf. *Note RFC 1521::) +(cf. *Note RFC 2046::) @@ -1421,10 +1372,13 @@ File: tm-en.info, Node: multipart/parallel, Next: multipart/signed, Prev: multip multipart/parallel ------------------ -multipart (*Note multipart::) $B$N#1$D$G!"J#?t$N(B part $B$r=g=xIU$1$:$K4^$a$k(B -$B>l9g$KMQ$$$k!#(B +*multipart/parallel* is a subtype of +multipart (*Note multipart::). This type is syntactically identical to +multipart/mixed (*Note multipart/mixed::), but the semantics are +different. In particular, in a parallel entity, the order of body parts +is not significant. -(cf. *Note RFC 1521::) +(cf. *Note RFC 2046::) @@ -1536,15 +1490,15 @@ File: tm-en.info, Node: Quoted-Printable, Next: RFC 821, Prev: PGP/MIME, Up: Glo Quoted-Printable ---------------- -RFC 1521 (*Note RFC 1521::) $B$GDj5A$5$l$F$$$k(B MIME (*Note MIME::) $B$K$*$1(B -$B$k(B binary data (*Note binary::) $B$N(B network $B$G$NJQ49K!$N#1$D!#(B +*Quoted-Printable* is a transfer +encoding method of MIME (*Note MIME::) defined in RFC 2045 (*Note RFC +2045::). + +If the data being encoded are mostly US-ASCII text, the encoded form of +the data remains largely recognizable by humans. -`=' $B$d@)8fJ8;z$d(B 128 $B0J>e$NJ8;z$J$I$O(B `=AF' $B$N$h$&$K(B `=' $B$N8e$KB3$/(B 16 -$B?J?t$GI=8=$9$k!#$3$N$?$a!"(BASCII (*Note ASCII::) $BJ8;zCf?4$N(B data $B$G$O(B -Base64 (*Note Base64::) $B$KHf$Y$k$H2DFI@-$,9b$/$J$k2DG=@-$,$"$k!#(B +(cf. *Note Base64::) -$B$7$+$7$J$,$i!"(BEBCDIC $B$K$OB8:_$7$J$$J8;z$rMxMQ$9$k>l9g!"(BEBCDIC $B$rMxMQ$7$F(B -$B$$$k(B network $B$G$O0BA4$KE>Aw$9$k$3$H$,$G$-$:!"(BBase64 $B$KHf$Y$F0BA4@-$ODc$$!#(B @@ -1625,7 +1579,7 @@ subset $B$K$J$C$F$$$k!#(BInternet $B$NI8=`$G$O$J$$$,!"(BUSENET $B0J30$N(B  -File: tm-en.info, Node: RFC 1153, Next: RFC 1521, Prev: RFC 1036, Up: Glossary +File: tm-en.info, Node: RFC 1153, Next: RFC 1557, Prev: RFC 1036, Up: Glossary RFC 1153 -------- @@ -1648,26 +1602,7 @@ message/rfc822::) $B$rMQ$$$?(B multipart (*Note multipart::) $B$rMQ$$$k$Y$-$G  -File: tm-en.info, Node: RFC 1521, Next: RFC 1557, Prev: RFC 1153, Up: Glossary - -RFC 1521 --------- - -MIME (*Note MIME::) $B$rDj5A$7$F$$$k(B RFC $B$N#1$D!#(B - - -[RFC 1521] N. Borenstein and N. Freed, "MIME (Multipurpose Internet - Mail Extensions) Part One: Mechanisms for Specifying and Describing - the Format of Internet Message Bodies", September 1993, Standards - Track (obsolete RFC 1341). - - -(RFC 1522 (*Note encoded-word::)) - - - - -File: tm-en.info, Node: RFC 1557, Next: RFC 1922, Prev: RFC 1521, Up: Glossary +File: tm-en.info, Node: RFC 1557, Next: RFC 1922, Prev: RFC 1153, Up: Glossary RFC 1557 -------- @@ -1683,7 +1618,7 @@ euc-kr (*Note euc-kr::) $B$H(B iso-2022-kr (*Note iso-2022-kr::) $B$H$$$&4Z9q  -File: tm-en.info, Node: RFC 1922, Next: plain text, Prev: RFC 1557, Up: Glossary +File: tm-en.info, Node: RFC 1922, Next: RFC 2045, Prev: RFC 1557, Up: Glossary RFC 1922 -------- @@ -1706,7 +1641,64 @@ field (*Note Content-Type field::) $B$N(B parameter $B$rDj5A$7$F$$$k!#(B  -File: tm-en.info, Node: plain text, Next: Security multipart, Prev: RFC 1922, Up: Glossary +File: tm-en.info, Node: RFC 2045, Next: RFC 2046, Prev: RFC 1922, Up: Glossary + +RFC 2045 +-------- + + +[RFC 2045] N. Freed and N. Borenstein, "Multipurpose Internet Mail + Extensions (MIME) Part One: Format of Internet Message Bodies", + November 1996, Standards Track (obsolete RFC 1521, 1522, 1590). + + + + + +File: tm-en.info, Node: RFC 2046, Next: RFC 2048, Prev: RFC 2045, Up: Glossary + +RFC 2046 +-------- + + +[RFC 2046] N. Freed and N. Borenstein, "Multipurpose Internet Mail + Extensions (MIME) Part Two: Media Types", November 1996, Standards + Track (obsolete RFC 1521, 1522, 1590). + + + + + +File: tm-en.info, Node: RFC 2048, Next: RFC 2049, Prev: RFC 2046, Up: Glossary + +RFC 2048 +-------- + + +[RFC 2048] N. Freed, J. Klensin and J. Postel, "Multipurpose + Internet Mail Extensions (MIME) Part Four: Registration + Procedures", November 1996, Standards Track (obsolete RFC 1521, + 1522, 1590). + + + + + +File: tm-en.info, Node: RFC 2049, Next: plain text, Prev: RFC 2048, Up: Glossary + +RFC 2049 +-------- + + +[RFC 2049] N. Freed and N. Borenstein, "Multipurpose Internet Mail + Extensions (MIME) Part Five: Conformance Criteria and Examples", + November 1996, Standards Track (obsolete RFC 1521, 1522, 1590). + + + + + +File: tm-en.info, Node: plain text, Next: Security multipart, Prev: RFC 2049, Up: Glossary plain text ---------- @@ -1745,10 +1737,8 @@ File: tm-en.info, Node: text/enriched, Next: text/plain, Prev: Security multipar text/enriched ------------- -RFC 1521 (*Note RFC 1521::) $B$GDj5A$5$l$?(B -*text/richtext* $B$KBe$o$C$F!"=qBN$dAHHG$K4X(B -$B$9$k>pJs$r;}$C$?(B text$B$rI=8=$9$k$?$a$N(B content-type (*Note -content-type::). +RFC 1521 $B$GDj5A$5$l$?(B *text/richtext* $B$KBe$o$C$F!"=qBN$dAHHG$K4X$9$k>pJs(B +$B$r;}$C$?(B text$B$rI=8=$9$k$?$a$N(B media type (*Note media type::). [text/enriched: RFC 1896] P. Resnick and A. Walker, "The @@ -1764,13 +1754,14 @@ File: tm-en.info, Node: text/plain, Next: tm-kernel, Prev: text/enriched, Up: Gl text/plain ---------- -RFC 1521 (*Note RFC 1521::) $B$GDj5A$5$l$?!"(Bplain text (*Note plain -text::) $B$rI=8=$9$k$?$a$N(B content-type (*Note content-type::). +*text/plain* is a media type (*Note media type::) for plain text (*Note plain text::), defined in RFC 2046 (*Note RFC 2046::). + +The default media type of "text/plain; charset=us-ascii" for Internet +mail describes existing Internet practice. That is, it is the type of +body defined by RFC 822 (*Note RFC 822::). + +(cf. *Note MIME charset::) (cf. *Note us-ascii::) -$BHs(B MIME message $B$J$I$N(B content-type $B$,Dj5A$5$l$J$$(B part $B$O(B MIME charset -(*Note MIME charset::) $B$,(B us-ascii (*Note us-ascii::) $B$G$"$k(B -*text/plain* $B$N(B part $B$G$"$k$H8+Pv$5$l$k$3$H$K(B -$B$J$C$F$$$k!#(B @@ -2062,8 +2053,8 @@ Via the tm ML, you can report tm bugs, obtain the latest release of tm, and discuss future enhancements to tm. To join the tm ML, send e-mail to: - * $BF|K\8l(B <tm-ja-admin@chamonix.jaist.ac.jp> - * $B1Q8l(B <tm-en-admin@chamonix.jaist.ac.jp> + * Japanese <tm-ja-admin@chamonix.jaist.ac.jp> + * English <tm-en-admin@chamonix.jaist.ac.jp> Since the user registration is done manually, please write the mail body in human-recognizable language (^_^). @@ -2079,24 +2070,28 @@ Concept Index * Menu: +* 7bit +* 7bit: 7bit. 5. +* 7bit (textual) string: 7bit. 12. +* 8bit +* 8bit: 8bit. 5. +* 8bit (textual) * ANSI X3.4:1986: ASCII. 9. -* application: content-type. 10. +* application: media type. 21. * application/pgp: PGP-kazu. 9. * ASCII: ASCII. 9. * ASCII: us-ascii. 16. -* audio: content-type. 10. +* audio: media type. 17. * automatic signature selection +* Base64: Base64. 5. * BBDB: setting for VM. 14. * BIG5: cn-big5. 13. -* binary: 8bit. 35. * binary: binary. 6. * binary data: binary. 15. * charset-edition: RFC 1922. 11. * charset-extension: RFC 1922. 11. * CNS 11643:1992: CNS. 13. * CNS 11643-1992: CNS. 13. -* Content-Type: How is MIME?. 15. -* content-type/subtype: content-type. 21. * Emacs/mule: MULE. 20. * encapsulation: RFC 1153. 6. * encapsulation: RFC 934. 6. @@ -2110,7 +2105,7 @@ Concept Index * GB 8565.2:1988: GB 8565.2. 8. * gnus-mime: tm-MUA. 16. * good bug report: Bug report. 17. -* image: content-type. 11. +* image: media type. 15. * Informational: hz-gb2312. 14. * Informational: hz-gb2312. 19. * Informational: iso-2022-jp-2. 10. @@ -2143,7 +2138,11 @@ Concept Index * ISO 8859-9:1990: ISO 8859-9. 5. * iso-2022-jp: iso-2022-jp. 18. * iso-2022-jp-2: iso-2022-jp-2. 10. +* iso-8859-1: iso-8859-1. 5. +* iso-8859-2: iso-8859-2. 5. +* iso-8859-5: iso-8859-5. 5. * iso-8859-7: iso-8859-7. 13. +* iso-8859-7: iso-8859-7. 5. * ISO/IEC 2022:1994: ISO 2022. 11. * ISO/IEC 646:1991: ISO 646. 10. * JIS @@ -2161,45 +2160,50 @@ Concept Index * KS C 5601:1987: KS C5601. 8. * KS C 5861:1992: euc-kr. 14. * KS C5601: KS C5601. 8. -* message: content-type. 11. +* media type: media type. 5. +* message: media type. 25. * message header: RFC 822. 6. * Message Transfer Agent: MTA. 5. * Message User Agent: MUA. 5. -* MIME: What is MIME?. 5. +* message/rfc822: message/rfc822. 5. * mime-setup: mime-setup. 6. * mule: MULE. 19. * MULE: MULE. 20. -* multipart: content-type. 12. -* Multipart: How is MIME?. 23. -* multipart: multipart. 10. -* multipart/digest: multipart/digest. 9. +* multipart: media type. 23. +* multipart: multipart. 5. +* multipart/digest: multipart/alternative. 5. +* multipart/digest: multipart/digest. 5. * multipart/encrypted: Security multipart. 8. +* multipart/parallel: multipart/parallel. 5. * multipart/signed: Security multipart. 6. * Multipurpose Internet Mail -* Multipurpose Internet Mail Extensions: MIME. 5. -* pad: Base64. 10. +* pad: Base64. 11. * parameter: Content-Type field. 21. * PGP: PGP. 16. * PGP-kazu: PGP-kazu. 7. * PGP/MIME: PGP/MIME. 20. +* Quoted-Printable: Quoted-Printable. 5. * RFC 1036: RFC 1036. 9. * RFC 1153: RFC 1153. 16. * RFC 1468: iso-2022-jp. 18. * RFC 1489: koi8-r. 13. -* RFC 1521: RFC 1521. 7. -* RFC 1522: encoded-word. 7. -* RFC 1522: encoded-word. 8. * RFC 1554: iso-2022-jp-2. 10. * RFC 1557: RFC 1557. 8. * RFC 1806: Content-Disposition. 8. * RFC 1842: hz-gb2312. 14. * RFC 1843: hz-gb2312. 19. * RFC 1847: Security multipart. 12. -* RFC 1896: text/enriched. 10. +* RFC 1896: text/enriched. 8. * RFC 1922: RFC 1922. 14. * RFC 1947: iso-8859-7. 13. * RFC 1991: PGP. 16. * RFC 2015: PGP/MIME. 20. +* RFC 2045: RFC 2045. 5. +* RFC 2046: RFC 2046. 5. +* RFC 2047: encoded-word. 7. +* RFC 2047: encoded-word. 8. +* RFC 2048: RFC 2048. 5. +* RFC 2049: RFC 2049. 5. * RFC 821: RFC 821. 8. * RFC 822: RFC 822. 14. * RFC 934: RFC 934. 13. @@ -2209,16 +2213,19 @@ Concept Index * SMTP: RFC 821. 8. * Standards Track: encoded-word. 8. * Standards Track: PGP/MIME. 20. -* Standards Track: RFC 1521. 7. +* Standards Track: RFC 2045. 5. +* Standards Track: RFC 2046. 5. +* Standards Track: RFC 2048. 5. +* Standards Track: RFC 2049. 5. * Standards Track: Security multipart. 12. * STD 10: RFC 821. 8. * STD 11: RFC 822. 14. * STD 9: FTP. 8. -* subtype: content-type. 7. * subtype: Content-Type field. 20. -* text: content-type. 13. -* text/enriched: text/enriched. 10. -* text/plain: text/plain. 10. +* subtype: media type. 8. +* text: media type. 13. +* text/enriched: text/enriched. 8. +* text/plain: text/plain. 5. * text/richtext: text/enriched. 6. * tm $BBg@9$j(B package: tm-MUA. 8. * tm-gnus: tm-MUA. 14. @@ -2226,18 +2233,21 @@ Concept Index * tm-rmail: tm-MUA. 20. * tm-setup: tm-setup. 5. * tm-vm: tm-MUA. 18. -* type: content-type. 6. * type: Content-Type field. 20. +* type: media type. 7. * us-ascii: us-ascii. 13. * USENET: RFC 1036. 9. -* video: content-type. 13. +* video: media type. 19. * vm: setting for VM. 6. * XEmacs/mule: MULE. 21. -* x-token: content-type. 29. -Extensions: What is MIME?. 6. +* x-token: media type. 29. +data: 7bit. 8. +data: 8bit. 8. +Extensions: MIME. 6. mail: RFC 822. 11. message: RFC 822. 11. method: method. 8. +string: 8bit. 12. tool: signature. 6. X0201: JIS X0201. 9. @@ -2258,104 +2268,105 @@ Variable Index Tag table: Node: Top152 Node: Introduction583 -Node: What is MIME?1326 -Node: How is MIME?1807 -Node: Glossary3209 -Node: 7bit6542 -Node: 8bit7859 -Node: 94 character set9914 -Node: 96 character set10187 -Node: 94x94 character set10454 -Node: ASCII10758 -Node: Base6411188 -Node: binary11886 -Node: Character Set12476 -Node: cn-gb12806 -Node: cn-big513292 -Node: CNS13928 -Node: Coded character set14609 -Node: Code extension14936 -Node: Content-Disposition15280 -Node: content-type15722 -Node: Content-Type field17129 -Node: Emacs18186 -Node: encoded-word18420 -Node: encapsulation18801 -Node: euc-kr19096 -Node: FTP19613 -Node: GB 231219898 -Node: GB 8565.220452 -Node: hz-gb231220915 -Node: ISO 202221724 -Node: iso-2022-cn22303 -Node: iso-2022-cn-ext22779 -Node: iso-2022-jp23451 -Node: iso-2022-jp-224166 -Node: iso-2022-kr24575 -Node: ISO 64625008 -Node: ISO 8859-125668 -Node: iso-8859-126099 -Node: ISO 8859-226544 -Node: iso-8859-226978 -Node: ISO 8859-327417 -Node: ISO 8859-427734 -Node: ISO 8859-528051 -Node: iso-8859-528460 -Node: ISO 8859-628902 -Node: ISO 8859-729221 -Node: iso-8859-729625 -Node: ISO 8859-830175 -Node: ISO 8859-930494 -Node: ISO-IR-16530811 -Node: JIS X020131326 -Node: JIS C622632120 -Node: JIS X020832413 -Node: JIS X021234296 -Node: koi8-r34648 -Node: KS C560135146 -Node: message35547 -Node: message/rfc82235810 -Node: method36118 -Node: MIME36469 -Node: MIME charset36891 -Node: MTA37453 -Node: MUA37667 -Node: MULE37841 -Node: multipart38695 -Node: multipart/alternative39531 -Node: multipart/digest39836 -Node: multipart/encrypted40483 -Node: multipart/mixed40813 -Node: multipart/parallel41106 -Node: multipart/signed41393 -Node: PGP41689 -Node: PGP-kazu42525 -Node: PGP/MIME44012 -Node: Quoted-Printable45045 -Node: RFC 82145806 -Node: RFC 82246086 -Node: RFC 93446570 -Node: RFC 103647025 -Node: RFC 115347479 -Node: RFC 152148020 -Node: RFC 155748465 -Node: RFC 192248856 -Node: plain text49522 -Node: Security multipart49798 -Node: text/enriched50431 -Node: text/plain50897 -Node: tm-kernel51385 -Node: tm-MUA51890 -Node: us-ascii52409 -Node: Setting53075 -Node: mime-setup53674 -Node: signature54175 -Node: Notice about GNUS55720 -Node: tm-setup56596 -Node: setting for VM57144 -Node: manual setting57456 -Node: Bug report58058 -Node: Concept Index59491 -Node: Variable Index68960 +Node: Glossary1260 +Node: 7bit4683 +Node: 8bit5615 +Node: 94 character set6752 +Node: 96 character set7025 +Node: 94x94 character set7292 +Node: ASCII7596 +Node: Base648026 +Node: binary8620 +Node: Character Set9210 +Node: cn-gb9540 +Node: cn-big510026 +Node: CNS10662 +Node: Coded character set11343 +Node: Code extension11670 +Node: Content-Disposition12014 +Node: media type12454 +Node: Content-Type field13406 +Node: Emacs14453 +Node: encoded-word14687 +Node: encapsulation15099 +Node: euc-kr15394 +Node: FTP15911 +Node: GB 231216196 +Node: GB 8565.216750 +Node: hz-gb231217213 +Node: ISO 202218022 +Node: iso-2022-cn18601 +Node: iso-2022-cn-ext19077 +Node: iso-2022-jp19749 +Node: iso-2022-jp-220464 +Node: iso-2022-kr20873 +Node: ISO 64621306 +Node: ISO 8859-121966 +Node: iso-8859-122397 +Node: ISO 8859-222847 +Node: iso-8859-223281 +Node: ISO 8859-323731 +Node: ISO 8859-424048 +Node: ISO 8859-524365 +Node: iso-8859-524774 +Node: ISO 8859-625192 +Node: ISO 8859-725511 +Node: iso-8859-725915 +Node: ISO 8859-826438 +Node: ISO 8859-926757 +Node: ISO-IR-16527074 +Node: JIS X020127589 +Node: JIS C622628383 +Node: JIS X020828676 +Node: JIS X021230559 +Node: koi8-r30911 +Node: KS C560131409 +Node: message31810 +Node: message/rfc82232073 +Node: method32450 +Node: MIME32801 +Node: MIME charset33790 +Node: MTA34310 +Node: MUA34524 +Node: MULE34698 +Node: multipart35552 +Node: multipart/alternative36292 +Node: multipart/digest36750 +Node: multipart/encrypted37397 +Node: multipart/mixed37727 +Node: multipart/parallel38053 +Node: multipart/signed38494 +Node: PGP38790 +Node: PGP-kazu39626 +Node: PGP/MIME41113 +Node: Quoted-Printable42146 +Node: RFC 82142530 +Node: RFC 82242810 +Node: RFC 93443294 +Node: RFC 103643749 +Node: RFC 115344203 +Node: RFC 155744744 +Node: RFC 192245135 +Node: RFC 204545799 +Node: RFC 204646110 +Node: RFC 204846399 +Node: RFC 204946714 +Node: plain text47028 +Node: Security multipart47304 +Node: text/enriched47937 +Node: text/plain48379 +Node: tm-kernel48859 +Node: tm-MUA49364 +Node: us-ascii49883 +Node: Setting50549 +Node: mime-setup51148 +Node: signature51649 +Node: Notice about GNUS53194 +Node: tm-setup54070 +Node: setting for VM54618 +Node: manual setting54930 +Node: Bug report55532 +Node: Concept Index56965 +Node: Variable Index67403  End tag table diff --git a/doc/tm-en.sgml b/doc/tm-en.sgml index 3375f3b..2a3fc8a 100644 --- a/doc/tm-en.sgml +++ b/doc/tm-en.sgml @@ -41,120 +41,62 @@ Please read following about each topics: </ul> -<h2> What is MIME? -<node> What is MIME? -<p> -<concept>MIME</concept> stands for <concept>Multipurpose Internet Mail -Extensions</concept>, it is a proposed internet standard for including -content and headers other than (ASCII) plain text in messages. -<p> -Current MIME standard consists of RFC 1521 and RFC 1522. RFC 1521 -describes multipurpose content in message bodies, while RFC 1522 -describes multilingual characters in headers. - - -<h2> How is MIME? -<node> How is MIME? -<p> -In multipurpose message side, MIME can represent various contents such -as images, sounds, videos, ... as against traditional Internet -mail/news message can represent only (<dref>us-ascii</dref>) plain -text. -<p> -Interestingly, MIME can send ``procedure'', such as <a -node="FTP">ftp</a>, ftp mail, file extraction, applying patch, ... -<p> -# Of course, it has security problem. -<p> -These various kinds of contents are defined by media types written in -<a node="Content-Type field"><concept>Content-Type</concept></a> -field. Namely MIME message has information about content in header. -So if reader defines processes for each <dref>content-type</dref>, -he/she can display image, or play video or sound, or get file by ftp, -or extract file, ... only read the message. -<p> -In addition, MIME message can represent message includes plural parts, -called <a node="multipart"><concept>Multipart</concept></a> message. -So it is possible to include picture and sound in one message. -<p> -MIME seems have philosophy of ``declaration''. In other words, MIME -is a message description language to represent various kinds of things -uses <dref>us-ascii</dref> as its ``alphabet''. Encoded-word defined -in <a node="encoded-word">RFC 1522</a> is same. -<p> -In addition, MUA displays only what it can understand and ignore what -can not understand. So content is saved from non-supported MUA and -MUA is saved from unknown data. - - <h2> Glossary <node> Glossary <h3> 7bit <node> 7bit <p> -$B$3$3$G$O(B 0 $B$+$i(B 127 $B$N@0?t$r;X$7$^$9!#(B +<concept>7bit</concept> means any integer between 0 .. 127. <p> -0 $B$+$i(B 127 $B$N@0?t$NNs$GI=8=$G$-$k$h$&$J(B data $B$r(B ``7bit $B$N(B data'' $B$H8F(B -$B$S$^$9!#(B +Any data represented by 7bit integers is called <concept>7bit +data</concept>. <p> -$B$^$?!"(B0 $B$+$i(B 31 $B$*$h$S(B 127 $B$GI=8=$5$l$k@)8fJ8;z$H(B 32 $B$GI=8=$5$l$k6uGr(B -$B$H(B 33 $B$+$i(B 126 $B$GI=8=$5$l$k?^7AJ8;z$+$i$J$kJ8;zNs$N$3$H$r(B ``7bit $B$NJ8(B -$B;zNs(B'' $B$H8F$S$^$9!J$3$l$O(B <a node="ISO 2022">ISO 2022</a> $B$N!V(B7 $BC10L7O!W(B -$B$HF1MM$G$9!K!#(B +Textual string consisted of Control characters between 0 .. 31 and +127, and space represented by 32, and graphic characters between 33 +.. 236 are called <concept>7bit (textual) string</concept>. <p> -$BEAE}E*$J(B Internet $B$N(B <a node="MTA">MTA</a> $B$O(B 7bit $B$N(B data $B$rE>Aw$G$-(B -$B$k$N$G!"(B7bit $B$N(B data $B$O(B <a -node="Quoted-Printable">Quoted-Printable</a> $B$d(B <a -node="Base64">Base64</a> $B$H$$$C$?JQ49$r9T$o$J$/$F$b$=$N$^$^E>Aw$G$-$^(B -$B$9!#(B +Traditional Internet <a node="MTA">MTA</a> can translate 7bit data, so +it is no need to translate by <a +node="Quoted-Printable">Quoted-Printable</a> or <a +node="Base64">Base64</a> for 7bit data. <p> -$B$7$+$7!"(B7bit $B$G$"$l$P$I$s$J(B data $B$G$bNI$$$H$O$$$($^$;$s!#$J$<$J$i!"#1(B -$B9T$ND9$5$,$"$^$j$KD9$$$H!"(BMTA $B$O$=$N(B message $B$rE>Aw$9$k$3$H$,$G$-$J$$(B -$B$+$i$G$9!#$A$J$_$K!"(B<a node="RFC 821">RFC 821</a> $B$O#19T$O2~9TJ8;z$r=|(B -$B$$$F(B 998 byte $B0JFb$G$"$k$3$H$r5a$a$F$$$^$9!#$h$C$F!"$3$l0J>e$N9T$,4^$^(B -$B$l$k2DG=@-$N$"$k(B data, $BNc$($P!"(BPostscript $B$N(B data $B$J$I$O(B -Quoted-Printable $BEy$G(B encode$B$9$kI,MQ$,$"$j$^$9!#(B +However if there are too long lines, it can not translate by 7bit MTA +even if it is 7bit data. <dref>RFC 821</dref> and <dref>RFC +2045</dref> require lines in 7bit data must be less than 998 bytes. +So if a ``7bit data'' has a line more than 999 bytes, it is regarded +as <dref>binary</dref>. For example, Postscript file should be +encoded by Quoted-Printable. <h3> 8bit <node> 8bit <p> -$B$3$3$G$O(B 0 $B$+$i(B 255 $B$N@0?t$r;X$7$^$9!#(B +<concept>8bit</concept> means any integer between 0 .. 255. <p> -0 $B$+$i(B 255 $B$N@0?t$NNs$GI=8=$G$-$k$h$&$J(B data $B$r(B ``8bit $B$N(B data'' $B$H8F(B -$B$S$^$9!#(B +Any data represented by 8bit integers is called <concept>8bit +data</concept>. <p> -$B$^$?!"(B0 $B$+$i(B 31, 127 $B$*$h$S(B 128 $B$+$i(B 159 $B$GI=8=$5$l$k@)8fJ8;z$H(B 32 $B$G(B -$BI=8=$5$l$k6uGr$H(B 33 $B$+$i(B 126 $B$H(B 160 $B$+$i(B 255 $B$GI=8=$5$l$k?^7AJ8;z$+$i(B -$B$J$kJ8;zNs$N$3$H$r(B ``8bit $B$NJ8;zNs(B'' $B$H8F$S$^$9!J$3$l$O(B <a node="ISO -2022">ISO 2022</a> $B$N!V(B8 $BC10L7O!W$HF1MM$G$9!K!#(B +Textual string consisted of Control characters between 0 .. 31, 127, +and 128 .. 159, and space represented by 32, and graphic characters +between 33 .. 236 and 160 .. 255 are called <concept>8bit (textual) +string</concept>. <p> -<a node="iso-8859-1">iso-8859-1</a> $B$d(B <a node="euc-kr">euc-kr</a> $B$H(B -$B$$$C$?Id9f2=J8;z=89g$O(B 8bit $B$NJ8;zNs$G$9!#(B +For example, <dref>iso-8859-1</dref> or <dref>euc-kr</dref> are +coded-character-set represented by 8bit textual string. <p> -$BEAE}E*$J(B Internet $B$N(B <a node="MTA">MTA</a> $B$O(B <a node="7bit">7bit</a> -$B$N(B data $B$7$+E>Aw$G$-$J$$$N$G!"$=$&$7$?(B MTA $B$r7PM3$9$k>l9g!"(B<a -node="Quoted-Printable">Quoted-Printable</a> $B$d(B <a -node="Base64">Base64</a> $B$H$$$C$?JQ49$r9T$o$J$/$F$O$J$j$^$;$s!#(B +Traditional Internet <a node="MTA">MTA</a> can translate only +<dref>7bit</dref> data, so if a 8bit data will be translated such MTA, +it must be encoded by <dref>Quoted-Printable</dref> or +<dref>Base64</dref>. <p> -$B$7$+$7!":G6a$G$O(B 8bit $B$NJ8;zNs$r$=$N$^$^DL$9$3$H$,$G$-$k(B MTA $B$bEP>l$7(B -$B$F$-$?$N$G!"$=$N$^$^Aw$k$3$H$,$G$-$k>l9g$bA}$($F$-$^$7$?!#(B +However 8bit MTA are increasing today. <p> -$B$7$+$7!"(B8bit $B$G$"$l$P$I$s$J(B data $B$G$bNI$$$H$O$$$($^$;$s!#$J$<$J$i!"#1(B -$B9T$ND9$5$,$"$^$j$KD9$$$H!"(BMTA $B$O$=$N(B message $B$rE>Aw$9$k$3$H$,$G$-$J$$(B -$B$+$i$G$9!#$A$J$_$K!"(BRFC 821 $B$O#19T$O2~9TJ8;z$r=|$$$F(B 998 byte $B0JFb$G$"(B -$B$k$3$H$r5a$a$F$$$^$9!#$h$C$F!"$3$l0J>e$N9T$,4^$^$l$k2DG=@-$N$"$k(B data, -$BNc$($P!"(BPostscript $B$N(B data $B$J$I$O(B Quoted-Printable $BEy$G(B encode$B$9$kI,MQ(B -$B$,$"$j$^$9!#(B -<p> -$B$^$?!"$3$&$7$?M}M3$+$i!"#19T$,(B 999 byte $B0J>e$N9T$,B8:_$9$k2DG=@-$N$"$k(B -data $B$O(B <a node="binary"><concept>binary</concept></a> $B$H8F$V$3$H$K$7(B -$B$^$9!#(B -<p> -$B$A$J$_$K!"(B7bit $B$GI=8=$G$-$k(B data $B$O(B 8bit $B$G$bI=8=$G$-$^$9!#$h$C$F!"(B -``8bit'' $B$H8@$C$?>l9g!"#19T$,(B 998 byte $B0J2<$NG$0U$N(B data $B$r;X$9$3$H$,(B -$B$"$j$^$9!#(B +However if there are too long lines, it can not translate by 8bit MTA +even if it is 8bit data. <dref>RFC 2045</dref> require lines in 8bit +data must be less than 998 bytes. So if a ``8bit data'' has a line +more than 999 bytes, it is regarded as <dref>binary</dref>, so it must +be encoded by Base64 or Quoted-Printable. <h3> 94 $BJ8;z=89g(B @@ -194,17 +136,17 @@ node="ISO 646">ISO 646</a> $B$N0l$D!#(B <h3> Base64 <node> Base64 <p> -<a node="RFC 1521">RFC 1521</a> $B$GDj5A$5$l$F$$$k(B <a -node="MIME">MIME</a> $B$K$*$1$k(B <a node="binary">binary data</a> $B$N(B -network $B$G$NJQ49K!$N#1$D!#(B +<concept>Base64</concept> is a transfer encoding method of +<dref>MIME</dref> defined in <dref>RFC 2045</dref>. <p> -$B!X(B64 $B?J?t!Y$H$$$&0UL#$G!"(B3 byte $B$N(B data $B$r(B 0 $B$+$i(B 63 $B$N?t$rI=$9(B -<dref>ASCII</dref> 4 $BJ8;z$KJQ49$9$kJ}K!!#!J$b$7!"(B4 $BJ8;z$K$J$i$J$1$l$P(B -<concept>pad</concept> $B$H8F$P$l$k5M$aJ*$r$7$FD9$5$rD4@0$9$k!K(B +The encoding process represents 24-bit groups of input bits as output +strings of 4 encoded characters. Encoded characters represent integer +0 .. 63 or <concept>pad</concept>. Base64 data must be 4 * n bytes, +so pad is used to adjust size. <p> -$B$3$N(B 65 $B<oN`$NJ8;z$O(B ASCII $B$H(B EBCDIC $B$N6&DLItJ,$+$iA*$P$l$F$*$j!"(B -Internet $B0J30$N(B network $B$r7PM3$9$k>l9g$G$b0BA4$KE>Aw$G$-$k$h$&$K@_7W$5(B -$B$l$F$$$k!#(B +These 65 characters are subset of all versions of ISO 646, including +US-ASCII, and all versions of EBCDIC. So it is safe even if it is +translated by non-Internet gateways. <h3> binary @@ -302,39 +244,44 @@ node="MIME">MIME</a> $B$N3HD%$N#1$D!#(B date="June 1995"> -<h3> content-type -<node> content-type +<h3> media type +<node> media type <p> -<dref>MIME</dref> $B$K$*$1$k(B <dref>part</dref> $B$N<oN`!#(B<concept>type</> -$B$H(B <concept>subtype</concept> $B$+$i$J$k!#(B<dref>RFC 1521</dref> $B$GDj5A$5(B -$B$l$F$$$k!#(B +<concept>media type</concept> specifies the nature of the data in the +body of <dref>MIME</dref> <dref>entity</dref>. It consists of +<concept>type</> and <concept>subtype</concept>. It is defined in +<dref>RFC 2046</dref>. <p> -type $B$OI8=`$G$O(B <concept>application</concept>, -<concept>audio</concept>, <concept>image</concept>, -<concept>message</concept>, <a -node="multipart"><concept>multipart</concept></a>, -<concept>text</concept>, <concept>video</concept> $B$,Dj5A$5$l!"$=$l$>$l(B -$B$K$O(B application/octet-stream, audio/basic, image/jpeg, -<dref>multipart/mixed</dref>, <dref>text/plain</dref>, video/mpeg $B$J$I(B -$B$N$5$^$6$^$J(B subtype $B$,Dj5A$5$l$F$$$k!#(B +Currently there are following types: -<memo title="$BCm0U(B"> -<p> -$B$3$3$G$O!"(Btext/plain $B$J$I$N(B type/subtype $B$NAH$r$7$P$7$P(B -<concept>content-type/subtype</concept> $B$H=q$/!#(B -</memo> +<ul> +<li><concept>text</concept> +</li> +<li><concept>image</concept> +</li> +<li><concept>audio</concept> +</li> +<li><concept>video</concept> +</li> +<li><concept>application</concept> +</li> +<li><a node="multipart"><concept>multipart</concept></a> +</li> +<li><concept>message</concept> +</ul> <p> -content-type $B$O!"(BRFC 1521 $B$GDj5A$5$l$F$$$k$b$N$K2C$($F!"EPO?$9$k$3$H$b(B -$B$G$-$k!#8=:_!"EPO?$5$l$F$$$k$b$N$O(B <a +And there are various subtypes, for example, application/octet-stream, +audio/basic, image/jpeg, <dref>multipart/mixed</dref>, +<dref>text/plain</dref>, video/mpeg... +<p> +You can refer registered media types at <a href="ftp://ftp.isi.edu/in-notes/iana/assignments/media-types">MEDIA -TYPES</a> $B$G;2>H$G$-$k!#(B +TYPES</a>. <p> -$B$^$?!"(Btype $B$b$7$/$O(B subtype $B$K!"A0$K(B `x-' $B$rIU$1$?(B -<concept>x-token</concept> $B$rMQ$$$k$3$H$K$h$j!"EPO?$5$l$F$$$J$$$b$N$r(B -$B;dE*$KMQ$$$k$3$H$b$G$-$k!#$7$+$7!"EvA3$N$3$H$J$,$i!"$3$&$7$?;dE*$J(B -content-type $B$ONJ2r$rF@$?<T$N4V$G$7$+2r<a$G$-$J$$$N$GMxMQ$K$OCm0U$9$k(B -$B$3$H!#(B +In addition, you can use private type or subtype using +<concept>x-token</concept>, which as the prefix `x-'. However you can +not use them in public. <p> <cf node="Content-Type field"> @@ -342,14 +289,14 @@ content-type $B$ONJ2r$rF@$?<T$N4V$G$7$+2r<a$G$-$J$$$N$GMxMQ$K$OCm0U$9$k(B <h3> Content-Type field <node> Content-Type field <p> -Header field to represent information about part, such as -<dref>content-type</dref>, <dref>MIME charset</dref>. It is defined -in <dref>RFC 1521</dref>. +Header field to represent information about body, such as <dref>media +type</dref>, <dref>MIME charset</dref>. It is defined in <dref>RFC +2045</dref>. <memo> <p> Historically, Content-Type field was proposed in RFC 1049. In it, -Content-Type did not distinguish type and subtype. However RFC 1521 +Content-Type did not distinguish type and subtype. However MIME parser may be able to accept RFC 1049 based Content-Type as unknown type. </memo> @@ -412,12 +359,12 @@ GNU Emacs $B$NJQ<o$NAm>N$H$9$k!#(B <node> encoded-word <p> Representation non <a node="ASCII">ASCII</a> characters in header. It -is defined in <concept>RFC 1522</concept>. +is defined in <concept>RFC 2047</concept>. <p> -<rfc number="1522" type="Standards Track" author="K. Moore" +<rfc number="2047" type="Standards Track" author="K. Moore" title="MIME (Multipurpose Internet Mail Extensions) Part - Two: Message Header Extensions for Non-ASCII Text" - date="September 1993"> + Three: Message Header Extensions for Non-ASCII Text" + date="November 1996" obsolete="1521,1522,1590"> <h3> encapsulation @@ -632,14 +579,14 @@ character set">96 $BJ8;z=89g(B</a>$B!#(B <h3> iso-8859-1 <node> iso-8859-1 <p> -$B@>2$=t8l$J$I$rI=8=$9$k$?$a$N(B <a node="MIME charset">MIME charset</a> -$B$N#1$D!#(B +<concept>iso-8859-1</concept> is a <dref>MIME charset</dref> for +west-European languages written by Latin script. <p> <a node="ISO 2022">ISO 2022</a> $B$K4p$$$F!"(B<a node="ASCII">ASCII</a> $B$K(B <a node="ISO 8859-1">ISO 8859-1</a> $B$r(B <a node="8bit">8bit</a> $B$G(B<a node="Code extension">$BId9f3HD%(B</a>$B$7$F$$$k!#(B <p> -<a node="RFC 1521">RFC 1521</a> $B$GDj5A$5$l$F$$$k!#(B +It is defined in <dref>RFC 2046</dref>. <h3> ISO 8859-2 @@ -658,14 +605,14 @@ character set">96 $BJ8;z=89g(B</a>$B!#(B <h3> iso-8859-2 <node> iso-8859-2 <p> -$BEl2$=t8l$rI=8=$9$k$?$a$N(B <a node="MIME charset">MIME charset</a> $B$N#1(B -$B$D!#(B +<concept>iso-8859-2</concept> is a <dref>MIME charset</dref> for +east-European languages written by Latin script. <p> <a node="ISO 2022">ISO 2022</a> $B$K4p$$$F!"(B<a node="ASCII">ASCII</a> $B$K(B <a node="ISO 8859-2">ISO 8859-2</a> $B$r(B <a node="8bit">8bit</a> $B$G(B<a node="Code extension">$BId9f3HD%(B</a>$B$7$F$$$k!#(B <p> -<a node="RFC 1521">RFC 1521</a> $B$GDj5A$5$l$F$$$k!#(B +It is defined in <dref>RFC 2046</dref>. <h3> ISO 8859-3 @@ -703,14 +650,14 @@ node="Code extension">$BId9f3HD%(B</a>$B$7$F$$$k!#(B <h3> iso-8859-5 <node> iso-8859-5 <p> -$B%-%j%kJ8;z$rI=8=$9$k$?$a$N(B <a node="MIME charset">MIME charset</a> $B$N(B -$B#1$D!#(B +<concept>iso-8859-5</concept> is a <dref>MIME charset</dref> for +Cyrillic script. <p> <a node="ISO 2022">ISO 2022</a> $B$K4p$$$F!"(B<a node="ASCII">ASCII</a> $B$K(B <a node="ISO 8859-5">ISO 8859-5</a> $B$r(B <a node="8bit">8bit</a> $B$G(B<a node="Code extension">$BId9f3HD%(B</a>$B$7$F$$$k!#(B <p> -<a node="RFC 1521">RFC 1521</a> $B$GDj5A$5$l$F$$$k!#(B +It is defined in <dref>RFC 2046</dref>. <h3> ISO 8859-6 @@ -738,14 +685,14 @@ node="Code extension">$BId9f3HD%(B</a>$B$7$F$$$k!#(B <h3> iso-8859-7 <node> iso-8859-7 <p> -$B%.%j%7%"8l$rI=8=$9$k$?$a$N(B <a node="MIME charset">MIME charset</a> $B$N(B -$B#1$D!#(B +<concept>iso-8859-7</concept> is a <dref>MIME charset</dref> for +Greek script. <p> <a node="ISO 2022">ISO 2022</a> $B$K4p$$$F!"(B<a node="ASCII">ASCII</a> $B$K(B <a node="ISO 8859-7">ISO 8859-7</a> $B$r(B <a node="8bit">8bit</a> $B$G(B<a node="Code extension">$BId9f3HD%(B</a>$B$7$F$$$k!#(B <p> -RFC 1947 $B$GDj5A$5$l$F$$$k!#(B +It is defined in RFC 1947. <rfc name="iso-8859-7" number="1947" type="Informational" author="D. Spinellis" title="Greek Character Encoding @@ -898,8 +845,10 @@ RFC 1489 $B$GDj5A$5$l$F$$$k!#(B <h3> message/rfc822 <node> message/rfc822 <p> -$BEAE}E*$J(B <dref>RFC 934</dref> $B$KBe$o$j!"(B<dref>RFC 822</dref> $B$GDj5A$5(B -$B$l$k(B mail $B$rI=$9(B MIME $B$N7A<0!#(B<dref>RFC 1521</dref> $B$GDj5A$5$l$F$$$k!#(B +<concept>message/rfc822</concept> indicates that the body contains an +encapsulated message, with the syntax of an <dref>RFC 822</dref> +message. It is the replacement of traditional <dref>RFC 934</dref> +encapsulation. It is defined in <dref>RFC 2046</dref>. <h3> method @@ -915,24 +864,42 @@ program. Emacs Lisp $B$G=q$+$l$?(B <concept>internal method</concept> $B$H(B <h3> MIME <node> MIME <p> -<concept>Multipurpose Internet Mail Extensions</concept> $B$NN,$G!"(B -Internet $B$N(B mail $B$d(B news $B$G(B <a node="us-ascii">us-ascii plain text</a> -$B0J30$NJ8;z$r;H$&$?$a$N(B <dref>RFC 822</dref> $B$KBP$9$k3HD%!#(B +MIME stands for <concept>Multipurpose Internet Mail +Extensions</concept>, it is an extension for <dref>RFC 822</dref>. +<p> +According to RFC 2045: <p> -<a node="RFC 1521">RFC 1521</a> $B$H(B <a node="encoded-word">RFC 1522</a> -$B$GDj5A$5$l$F$$$k!#(B +STD 11, RFC 822, defines a message representation protocol specifying +considerable detail about US-ASCII message headers, and leaves the +message content, or message body, as flat US-ASCII text. This set of +documents, collectively called the Multipurpose Internet Mail +Extensions, or MIME, redefines the format of messages to allow for <p> -<cf node="What is MIME?"> +<ol> +<li>textual message bodies in character sets other than US-ASCII, +</li> +<li>an extensible set of different formats for non-textual message +bodies, +</li> +<li>multi-part message bodies, and +</li> +<li>textual header information in character sets other than US-ASCII. +</ol> + +<p> +It is defined in <dref>RFC 2045</dref>, <dref>RFC 2046</dref>, <a +node="encoded-word">RFC 2047</a>, <dref>RFC 2048</dref> and <dref>RFC +2049</dref>. <h3> MIME charset <node> MIME charset <p> -<dref>Content-Type field</dref> $B$d(B <a -node="encoded-word">encoded-word</a> $B$N(B charset parameter $B$GMQ$$$i$l$k(B -$BEPO?$5$l$?(B<a node="Coded character set">$BId9f2=J8;z=89g(B</a>$B!#(B +<dref>Coded character set</dref> used in <dref>Content-Type +field</dref> or charset parameter of <a +node="encoded-word">encoded-word</a>. <p> -<a node="RFC 1521">RFC 1521</a> $B$GDj5A$5$l$F$$$k!#(B +It is defined in <dref>RFC 2045</dref>. <p> <a node="iso-2022-jp">iso-2022-jp</a> $B$d(B <a node="euc-kr">euc-kr</a> $B$O$=$N#1$D!#!J$3$3$G$O!"(BMIME charset $B$O(B<a node="Character set">$BJ8;z=8(B @@ -983,12 +950,11 @@ href="ftp://etlport.etl.go.jp/pub/mule/mule-19.33-gamma.taz"> alpha $BHG(B <h3> Multipart <node> multipart <p> -$B#1$D$N(B <dref>message</dref> $B$KJ#?t$N(B part $B$rF~$l$k$?$a$N(B -<dref>MIME</dref> $B$K$*$1$kI=8=K!!"$b$7$/$O!"J#?t$N(B part $B$+$i$J$k(B -message $B$r;X$9!#(B<cf node="content-type"> +<concept>multipart</concept> means <dref>media type</dref> to insert +multiple <dref>entities</dref> in a single body. Or it also indicates +a message consists of multiple entities. <p> -$B8=:_!"Dj5A$5$l$F$$$k(B <concept>multipart</concept> $B$H$7$F$O!"(B<dref>RFC -1521</dref> $B$GDj5A$5$l$?(B +There are following subtypes registered in <dref>RFC 2046</dref>: <ul> <li><dref>multipart/mixed</dref> @@ -998,39 +964,40 @@ message $B$r;X$9!#(B<cf node="content-type"> </ul> <noindent> -$B$N$[$+(B <a node="Security multipart">RFC 1847</a> $B$GDj5A$5$l$?(B +and registered in <a node="Security multipart">RFC 1847</a>: <ul> <li><dref>multipart/signed</dref> <li><dref>multipart/encrypted</dref> </ul> -<noindent> -$B$J$I$,$"$k!#(B - <h3> multipart/alternative <node> multipart/alternative <p> -<dref>multipart</dref> $B$N#1$D$G!"F1$8>pJs$r0[$C$?7A<0$GF~$l!"A*Br;h$H(B -$B$9$k>l9g$KMQ$$$k!#(B +<concept>multipart/digest</concept> is one of <dref>multipart</dref> +media types. This type is syntactically identical to +<dref>multipart/mixed</dref>, but the semantics are different. In +particular, each of the body parts is an ``alternative'' version of +the same information. <p> -<cf node="RFC 1521"> +<cf node="RFC 2046"> <h3> multipart/digest <node> multipart/digest <p> -<dref>multipart</dref> $B$N#1$D$G!"4^$^$l$k(B part $B$N(B default $B$N(B -<dref>content-type</dref> $B$,(B <dref>multipart/mixed</dref> $B$J$I$N>l9g(B -<dref>text/plain</dref> $B$G$"$k$N$KBP$7!"(B -<concept>multipart/digest</concept>$B$G$O(B <dref>message/rfc822</dref> $B$,(B -$BMQ$$$i$l$kE@$,0[$J$k!#(B +<concept>multipart/digest</concept> is one of <dref>multipart</dref> +media types. This type is syntactically identical to +<dref>multipart/mixed</dref>, but the semantics are different. In +particular, in a digest, the default Content-Type value for a body +part is changed from <dref>text/plain</dref> to +<dref>message/rfc822</dref>. <p> -$B$3$l$OEAE}E*$J(B <dref>RFC 1153</dref> $B$K4p$E$/(B -<dref>encapsulation</dref> $B$KBe$o$k$b$N$G$"$k!#(B +This is the replacement of traditional <dref>RFC 1153</dref> based +<dref>encapsulation</dref>. <p> -<cf node="RFC 1521"> +<cf node="RFC 2046"> <h3> multipart/encrypted @@ -1045,19 +1012,23 @@ RFC 1847 $B$GDj5A$5$l$?(B <dref>Security multipart</dref> $B$N#1$D$G!"0E9f2= <h3> multipart/mixed <node> multipart/mixed <p> -<dref>multipart</dref> $B$N<gMW$J(B subtype $B$G!"J#?t$N(B part $B$r=g=xIU$1$FJB(B -$B$Y$k>l9g$KMQ$$$k!#(B +Primary and default subtype of <dref>multipart</dref>, it is used when +the body parts are independent and need to be bundled in a particular +order. <p> -<cf node="RFC 1521"> +<cf node="RFC 2046"> <h3> multipart/parallel <node> multipart/parallel <p> -<dref>multipart</dref> $B$N#1$D$G!"J#?t$N(B part $B$r=g=xIU$1$:$K4^$a$k>l9g(B -$B$KMQ$$$k!#(B +<concept>multipart/parallel</concept> is a subtype of +<dref>multipart</dref>. This type is syntactically identical to +<dref>multipart/mixed</dref>, but the semantics are different. In +particular, in a parallel entity, the order of body parts is not +significant. <p> -<cf node="RFC 1521"> +<cf node="RFC 2046"> <h3> multipart/signed @@ -1144,17 +1115,13 @@ Internet $B$G$O:#8e(B <dref>PGP/MIME</dref> $B$NJ}8~$GI8=`2=$7$F$$$3$&$H$$$& <h3> Quoted-Printable <node> Quoted-Printable <p> -<a node="RFC 1521">RFC 1521</a> $B$GDj5A$5$l$F$$$k(B <a -node="MIME">MIME</a> $B$K$*$1$k(B <a node="binary">binary data</a> $B$N(B -network $B$G$NJQ49K!$N#1$D!#(B +<concept>Quoted-Printable</concept> is a transfer encoding method of +<dref>MIME</dref> defined in <dref>RFC 2045</dref>. <p> -`=' $B$d@)8fJ8;z$d(B 128 $B0J>e$NJ8;z$J$I$O(B `=AF' $B$N$h$&$K(B `=' $B$N8e$KB3$/(B 16 -$B?J?t$GI=8=$9$k!#$3$N$?$a!"(B<a node="ASCII">ASCII</a> $BJ8;zCf?4$N(B data $B$G(B -$B$O(B <a node="Base64">Base64</a> $B$KHf$Y$k$H2DFI@-$,9b$/$J$k2DG=@-$,$"$k!#(B +If the data being encoded are mostly US-ASCII text, the encoded form +of the data remains largely recognizable by humans. <p> -$B$7$+$7$J$,$i!"(BEBCDIC $B$K$OB8:_$7$J$$J8;z$rMxMQ$9$k>l9g!"(BEBCDIC $B$rMxMQ$7(B -$B$F$$$k(B network $B$G$O0BA4$KE>Aw$9$k$3$H$,$G$-$:!"(BBase64 $B$KHf$Y$F0BA4@-$O(B -$BDc$$!#(B +<cf node="Base64"> <h3> RFC 821 @@ -1229,19 +1196,6 @@ RFC. <dref>RFC 934</dref> $B$rMQ$$$k!#(B date="April 1990"> -<h3> RFC 1521 <node> RFC 1521 -<p> -<a node="MIME">MIME</a> $B$rDj5A$7$F$$$k(B RFC $B$N#1$D!#(B - -<rfc number="1521" type="Standards Track" author="N. Borenstein and - N. Freed" title="MIME (Multipurpose Internet Mail - Extensions) Part One: Mechanisms for Specifying and - Describing the Format of Internet Message Bodies" - date="September 1993" obsolete="1341"> - -(<a node="encoded-word">RFC 1522</a>) - - <h3> RFC 1557 <node> RFC 1557 <p> @@ -1270,6 +1224,44 @@ field</dref> $B$N(B parameter $B$rDj5A$7$F$$$k!#(B date="March 1996"> +<h3> RFC 2045 +<node> RFC 2045 +<p> +<rfc number="2045" type="Standards Track" author="N. Freed and + N. Borenstein" title="Multipurpose Internet Mail + Extensions (MIME) Part One: Format of Internet Message + Bodies" date="November 1996" obsolete="1521, 1522, + 1590"> + + +<h3> RFC 2046 +<node> RFC 2046 +<p> +<rfc number="2046" type="Standards Track" author="N. Freed and + N. Borenstein" title="Multipurpose Internet Mail + Extensions (MIME) Part Two: Media Types" + date="November 1996" obsolete="1521, 1522, 1590"> + + +<h3> RFC 2048 +<node> RFC 2048 +<p> +<rfc number="2048" type="Standards Track" author="N. Freed, J. Klensin + and J. Postel" title="Multipurpose Internet Mail + Extensions (MIME) Part Four: Registration Procedures" + date="November 1996" obsolete="1521, 1522, 1590"> + + +<h3> RFC 2049 +<node> RFC 2049 +<p> +<rfc number="2049" type="Standards Track" author="N. Freed and + N. Borenstein" title="Multipurpose Internet Mail + Extensions (MIME) Part Five: Conformance Criteria and + Examples" date="November 1996" obsolete="1521, 1522, + 1590"> + + <h3> plain text <node> plain text <p> @@ -1296,9 +1288,9 @@ node="multipart/encrypted"><concept>multipart/encrypted</concept></a> <h3> text/enriched <node> text/enriched <p> -<a node="RFC 1521">RFC 1521</a> $B$GDj5A$5$l$?(B -<concept>text/richtext</concept> $B$KBe$o$C$F!"=qBN$dAHHG$K4X$9$k>pJs$r(B -$B;}$C$?(B text$B$rI=8=$9$k$?$a$N(B <dref>content-type</dref>. +RFC 1521 $B$GDj5A$5$l$?(B <concept>text/richtext</concept> $B$KBe$o$C$F!"=q(B +$BBN$dAHHG$K4X$9$k>pJs$r;}$C$?(B text$B$rI=8=$9$k$?$a$N(B <dref>media +type</dref>. <rfc name="text/enriched" number="1896" author="P. Resnick and A. Walker" title="The text/enriched MIME Content-type" @@ -1308,13 +1300,14 @@ node="multipart/encrypted"><concept>multipart/encrypted</concept></a> <h3> text/plain <node> text/plain <p> -<dref>RFC 1521</dref> $B$GDj5A$5$l$?!"(B<dref>plain text</dref> $B$rI=8=$9$k(B -$B$?$a$N(B <dref>content-type</dref>. +<concept>text/plain</concept> is a <dref>media type</dref> for +<dref>plain text</dref>, defined in <dref>RFC 2046</dref>. +<p> +The default media type of ``text/plain; charset=us-ascii'' for +Internet mail describes existing Internet practice. That is, it is +the type of body defined by <dref>RFC 822</dref>. <p> -$BHs(B MIME message $B$J$I$N(B content-type $B$,Dj5A$5$l$J$$(B part $B$O(B <dref>MIME -charset</dref> $B$,(B <dref>us-ascii</dref> $B$G$"$k(B -<concept>text/plain</concept> $B$N(B part $B$G$"$k$H8+Pv$5$l$k$3$H$K$J$C$F$$(B -$B$k!#(B +<cf node="MIME charset"><cf node="us-ascii"> <h3> tm-kernel, tm @@ -1572,8 +1565,8 @@ tm, and discuss future enhancements to tm. To join the tm ML, send e-mail to: <ul> -<li> $BF|K\8l(B <mail>tm-ja-admin@chamonix.jaist.ac.jp</mail> -<li> $B1Q8l(B <mail>tm-en-admin@chamonix.jaist.ac.jp</mail> +<li> Japanese <mail>tm-ja-admin@chamonix.jaist.ac.jp</mail> +<li> English <mail>tm-en-admin@chamonix.jaist.ac.jp</mail> </ul> <noindent> diff --git a/doc/tm-en.texi b/doc/tm-en.texi index 5494c88..2a3f652 100644 --- a/doc/tm-en.texi +++ b/doc/tm-en.texi @@ -58,59 +58,10 @@ mime/editor-mode (@ref{(tm-edit-en)}) @menu -* What is MIME?:: -* How is MIME?:: * Glossary:: @end menu -@node What is MIME?, How is MIME?, Introduction, Introduction -@section What is MIME? - -@cindex{MIME}@strong{MIME} stands for @cindex{Multipurpose Internet Mail -Extensions}@strong{Multipurpose Internet Mail Extensions}, it is a -proposed internet standard for including content and headers other than -(ASCII) plain text in messages.@refill - -Current MIME standard consists of RFC 1521 and RFC 1522. RFC 1521 -describes multipurpose content in message bodies, while RFC 1522 -describes multilingual characters in headers. - - -@node How is MIME?, Glossary, What is MIME?, Introduction -@section How is MIME? - -In multipurpose message side, MIME can represent various contents such -as images, sounds, videos, ... as against traditional Internet mail/news -message can represent only (us-ascii (@ref{us-ascii})) plain -text.@refill - -Interestingly, MIME can send ``procedure'', such as ftp (@ref{FTP}), ftp -mail, file extraction, applying patch, ...@refill - -# Of course, it has security problem.@refill - -These various kinds of contents are defined by media types written in -@cindex{Content-Type}@strong{Content-Type} (@ref{Content-Type field}) -field. Namely MIME message has information about content in header. So -if reader defines processes for each content-type (@ref{content-type}), -he/she can display image, or play video or sound, or get file by ftp, or -extract file, ... only read the message.@refill - -In addition, MIME message can represent message includes plural parts, -called @cindex{Multipart}@strong{Multipart} (@ref{multipart}) message. -So it is possible to include picture and sound in one message.@refill - -MIME seems have philosophy of ``declaration''. In other words, MIME is -a message description language to represent various kinds of things uses -us-ascii (@ref{us-ascii}) as its ``alphabet''. Encoded-word defined in -RFC 1522 (@ref{encoded-word}) is same.@refill - -In addition, MUA displays only what it can understand and ignore what -can not understand. So content is saved from non-supported MUA and -MUA is saved from unknown data. - - -@node Glossary, , How is MIME?, Introduction +@node Glossary, , Introduction, Introduction @section Glossary @@ -130,7 +81,7 @@ MUA is saved from unknown data. * Coded character set:: Coded character set$B!JId9f2=J8;z=89g!K(B, Character code$B!JJ8;zId9f!K(B * Code extension:: Code extension$B!JId9f3HD%!K(B * Content-Disposition:: Content-Disposition field -* content-type:: +* media type:: * Content-Type field:: * Emacs:: * encoded-word:: @@ -191,9 +142,12 @@ MUA is saved from unknown data. * RFC 934:: * RFC 1036:: * RFC 1153:: -* RFC 1521:: RFC 1521 * RFC 1557:: * RFC 1922:: +* RFC 2045:: +* RFC 2046:: +* RFC 2048:: +* RFC 2049:: * plain text:: * Security multipart:: * text/enriched:: @@ -206,64 +160,56 @@ MUA is saved from unknown data. @node 7bit, 8bit, Glossary, Glossary @subsection 7bit -$B$3$3$G$O(B 0 $B$+$i(B 127 $B$N@0?t$r;X$7$^$9!#(B@refill +@cindex{7bit}@strong{7bit} means any integer between 0 .. 127.@refill -0 $B$+$i(B 127 $B$N@0?t$NNs$GI=8=$G$-$k$h$&$J(B data $B$r(B ``7bit $B$N(B data'' $B$H8F$S(B -$B$^$9!#(B@refill +Any data represented by 7bit integers is called @cindex{7bit +data}@strong{7bit data}.@refill -$B$^$?!"(B0 $B$+$i(B 31 $B$*$h$S(B 127 $B$GI=8=$5$l$k@)8fJ8;z$H(B 32 $B$GI=8=$5$l$k6uGr$H(B -33 $B$+$i(B 126 $B$GI=8=$5$l$k?^7AJ8;z$+$i$J$kJ8;zNs$N$3$H$r(B ``7bit $B$NJ8;zNs(B'' -$B$H8F$S$^$9!J$3$l$O(B ISO 2022 (@ref{ISO 2022}) $B$N!V(B7 $BC10L7O!W$HF1MM$G$9!K!#(B +Textual string consisted of Control characters between 0 .. 31 and 127, +and space represented by 32, and graphic characters between 33 .. 236 +are called @cindex{7bit (textual) string}@strong{7bit (textual) +string}.@refill -$BEAE}E*$J(B Internet $B$N(B MTA (@ref{MTA}) $B$O(B 7bit $B$N(B data $B$rE>Aw$G$-$k$N$G!"(B -7bit $B$N(B data $B$O(B Quoted-Printable (@ref{Quoted-Printable}) $B$d(B Base64 -(@ref{Base64}) $B$H$$$C$?JQ49$r9T$o$J$/$F$b$=$N$^$^E>Aw$G$-$^$9!#(B@refill +Traditional Internet MTA (@ref{MTA}) can translate 7bit data, so it is +no need to translate by Quoted-Printable (@ref{Quoted-Printable}) or +Base64 (@ref{Base64}) for 7bit data.@refill -$B$7$+$7!"(B7bit $B$G$"$l$P$I$s$J(B data $B$G$bNI$$$H$O$$$($^$;$s!#$J$<$J$i!"#19T(B -$B$ND9$5$,$"$^$j$KD9$$$H!"(BMTA $B$O$=$N(B message $B$rE>Aw$9$k$3$H$,$G$-$J$$$+$i(B -$B$G$9!#$A$J$_$K!"(BRFC 821 (@ref{RFC 821}) $B$O#19T$O2~9TJ8;z$r=|$$$F(B 998 -byte $B0JFb$G$"$k$3$H$r5a$a$F$$$^$9!#$h$C$F!"$3$l0J>e$N9T$,4^$^$l$k2DG=@-(B -$B$N$"$k(B data, $BNc$($P!"(BPostscript $B$N(B data $B$J$I$O(B Quoted-Printable $BEy$G(B -encode$B$9$kI,MQ$,$"$j$^$9!#(B +However if there are too long lines, it can not translate by 7bit MTA +even if it is 7bit data. RFC 821 (@ref{RFC 821}) and RFC 2045 (@ref{RFC +2045}) require lines in 7bit data must be less than 998 bytes. So if a +``7bit data'' has a line more than 999 bytes, it is regarded as binary +(@ref{binary}). For example, Postscript file should be encoded by +Quoted-Printable. @node 8bit, 94 character set, 7bit, Glossary @subsection 8bit -$B$3$3$G$O(B 0 $B$+$i(B 255 $B$N@0?t$r;X$7$^$9!#(B@refill +@cindex{8bit}@strong{8bit} means any integer between 0 .. 255.@refill -0 $B$+$i(B 255 $B$N@0?t$NNs$GI=8=$G$-$k$h$&$J(B data $B$r(B ``8bit $B$N(B data'' $B$H8F$S(B -$B$^$9!#(B@refill +Any data represented by 8bit integers is called @cindex{8bit +data}@strong{8bit data}.@refill -$B$^$?!"(B0 $B$+$i(B 31, 127 $B$*$h$S(B 128 $B$+$i(B 159 $B$GI=8=$5$l$k@)8fJ8;z$H(B 32 $B$GI=(B -$B8=$5$l$k6uGr$H(B 33 $B$+$i(B 126 $B$H(B 160 $B$+$i(B 255 $B$GI=8=$5$l$k?^7AJ8;z$+$i$J$k(B -$BJ8;zNs$N$3$H$r(B ``8bit $B$NJ8;zNs(B'' $B$H8F$S$^$9!J$3$l$O(B ISO 2022 (@ref{ISO -2022}) $B$N!V(B8 $BC10L7O!W$HF1MM$G$9!K!#(B@refill +Textual string consisted of Control characters between 0 .. 31, 127, and +128 .. 159, and space represented by 32, and graphic characters between +33 .. 236 and 160 .. 255 are called @cindex{8bit (textual) +string}@strong{8bit (textual) string}.@refill -iso-8859-1 (@ref{iso-8859-1}) $B$d(B euc-kr (@ref{euc-kr}) $B$H$$$C$?Id9f2=J8(B -$B;z=89g$O(B 8bit $B$NJ8;zNs$G$9!#(B@refill +For example, iso-8859-1 (@ref{iso-8859-1}) or euc-kr (@ref{euc-kr}) are +coded-character-set represented by 8bit textual string.@refill -$BEAE}E*$J(B Internet $B$N(B MTA (@ref{MTA}) $B$O(B 7bit (@ref{7bit}) $B$N(B data $B$7$+E>(B -$BAw$G$-$J$$$N$G!"$=$&$7$?(B MTA $B$r7PM3$9$k>l9g!"(BQuoted-Printable -(@ref{Quoted-Printable}) $B$d(B Base64 (@ref{Base64}) $B$H$$$C$?JQ49$r9T$o$J$/(B -$B$F$O$J$j$^$;$s!#(B@refill +Traditional Internet MTA (@ref{MTA}) can translate only 7bit +(@ref{7bit}) data, so if a 8bit data will be translated such MTA, it +must be encoded by Quoted-Printable (@ref{Quoted-Printable}) or Base64 +(@ref{Base64}).@refill -$B$7$+$7!":G6a$G$O(B 8bit $B$NJ8;zNs$r$=$N$^$^DL$9$3$H$,$G$-$k(B MTA $B$bEP>l$7$F(B -$B$-$?$N$G!"$=$N$^$^Aw$k$3$H$,$G$-$k>l9g$bA}$($F$-$^$7$?!#(B@refill - -$B$7$+$7!"(B8bit $B$G$"$l$P$I$s$J(B data $B$G$bNI$$$H$O$$$($^$;$s!#$J$<$J$i!"#19T(B -$B$ND9$5$,$"$^$j$KD9$$$H!"(BMTA $B$O$=$N(B message $B$rE>Aw$9$k$3$H$,$G$-$J$$$+$i(B -$B$G$9!#$A$J$_$K!"(BRFC 821 $B$O#19T$O2~9TJ8;z$r=|$$$F(B 998 byte $B0JFb$G$"$k$3$H(B -$B$r5a$a$F$$$^$9!#$h$C$F!"$3$l0J>e$N9T$,4^$^$l$k2DG=@-$N$"$k(B data, $BNc$($P!"(B -Postscript $B$N(B data $B$J$I$O(B Quoted-Printable $BEy$G(B encode$B$9$kI,MQ$,$"$j$^$9!#(B -@refill +However 8bit MTA are increasing today.@refill -$B$^$?!"$3$&$7$?M}M3$+$i!"#19T$,(B 999 byte $B0J>e$N9T$,B8:_$9$k2DG=@-$N$"$k(B -data $B$O(B @cindex{binary}@strong{binary} (@ref{binary}) $B$H8F$V$3$H$K$7$^$9!#(B - -$B$A$J$_$K!"(B7bit $B$GI=8=$G$-$k(B data $B$O(B 8bit $B$G$bI=8=$G$-$^$9!#$h$C$F!"(B -``8bit'' $B$H8@$C$?>l9g!"#19T$,(B 998 byte $B0J2<$NG$0U$N(B data $B$r;X$9$3$H$,(B -$B$"$j$^$9!#(B +However if there are too long lines, it can not translate by 8bit MTA +even if it is 8bit data. RFC 2045 (@ref{RFC 2045}) require lines in +8bit data must be less than 998 bytes. So if a ``8bit data'' has a line +more than 999 bytes, it is regarded as binary (@ref{binary}), so it must +be encoded by Base64 or Quoted-Printable. @node 94 character set, 96 character set, 8bit, Glossary @@ -307,16 +253,17 @@ Interchange'', ANSI X3.4:1986. @node Base64, binary, ASCII, Glossary @subsection Base64 -RFC 1521 (@ref{RFC 1521}) $B$GDj5A$5$l$F$$$k(B MIME (@ref{MIME}) $B$K$*$1$k(B -binary data (@ref{binary}) $B$N(B network $B$G$NJQ49K!$N#1$D!#(B@refill +@cindex{Base64}@strong{Base64} is a transfer encoding method of MIME +(@ref{MIME}) defined in RFC 2045 (@ref{RFC 2045}).@refill -$B!X(B64 $B?J?t!Y$H$$$&0UL#$G!"(B3 byte $B$N(B data $B$r(B 0 $B$+$i(B 63 $B$N?t$rI=$9(B ASCII -(@ref{ASCII}) 4 $BJ8;z$KJQ49$9$kJ}K!!#!J$b$7!"(B4 $BJ8;z$K$J$i$J$1$l$P(B -@cindex{pad}@strong{pad} $B$H8F$P$l$k5M$aJ*$r$7$FD9$5$rD4@0$9$k!K(B@refill +The encoding process represents 24-bit groups of input bits as output +strings of 4 encoded characters. Encoded characters represent integer 0 +.. 63 or @cindex{pad}@strong{pad}. Base64 data must be 4 * n bytes, so +pad is used to adjust size.@refill -$B$3$N(B 65 $B<oN`$NJ8;z$O(B ASCII $B$H(B EBCDIC $B$N6&DLItJ,$+$iA*$P$l$F$*$j!"(B -Internet $B0J30$N(B network $B$r7PM3$9$k>l9g$G$b0BA4$KE>Aw$G$-$k$h$&$K@_7W$5(B -$B$l$F$$$k!#(B +These 65 characters are subset of all versions of ISO 646, including +US-ASCII, and all versions of EBCDIC. So it is safe even if it is +translated by non-Internet gateways. @node binary, Character Set, Base64, Glossary @@ -411,7 +358,7 @@ ISO 2022 (@ref{ISO 2022}) $B$G$N=*C<J8;z$O!"Bh#1LL$,(B `G', $BBh#2LL$,(B `H' $B$a$KMQ$$$k<jK!!#(BISO 2022 (@ref{ISO 2022}) $B$O$=$N#1$D!#(B -@node Content-Disposition, content-type, Code extension, Glossary +@node Content-Disposition, media type, Code extension, Glossary @subsection Content-Disposition field Content $B$NI=<($N;EJ}$d(B file $BL>$rI=8=$9$k$?$a$N(B field. MIME (@ref{MIME}) @@ -428,60 +375,63 @@ Experimental. -@node content-type, Content-Type field, Content-Disposition, Glossary -@subsection content-type +@node media type, Content-Type field, Content-Disposition, Glossary +@subsection media type -MIME (@ref{MIME}) $B$K$*$1$k(B part (@ref{part}) $B$N<oN`!#(B -@cindex{type}@strong{type} $B$H(B @cindex{subtype}@strong{subtype} $B$+$i$J$k!#(B -RFC 1521 (@ref{RFC 1521}) $B$GDj5A$5$l$F$$$k!#(B@refill +@cindex{media type}@strong{media type} specifies the nature of the data +in the body of MIME (@ref{MIME}) entity (@ref{entity}). It consists of +@cindex{type}@strong{type} and @cindex{subtype}@strong{subtype}. It is +defined in RFC 2046 (@ref{RFC 2046}).@refill -type $B$OI8=`$G$O(B @cindex{application}@strong{application}, -@cindex{audio}@strong{audio}, @cindex{image}@strong{image}, -@cindex{message}@strong{message}, @cindex{multipart}@strong{multipart} -(@ref{multipart}), @cindex{text}@strong{text}, -@cindex{video}@strong{video} $B$,Dj5A$5$l!"$=$l$>$l$K$O(B -application/octet-stream, audio/basic, image/jpeg, multipart/mixed -(@ref{multipart/mixed}), text/plain (@ref{text/plain}), video/mpeg $B$J$I(B -$B$N$5$^$6$^$J(B subtype $B$,Dj5A$5$l$F$$$k!#(B +Currently there are following types: -@noindent -@strong{[$BCm0U(B]} -@quotation +@itemize @bullet +@item +@cindex{text}@strong{text} +@item +@cindex{image}@strong{image} +@item +@cindex{audio}@strong{audio} +@item +@cindex{video}@strong{video} +@item +@cindex{application}@strong{application} +@item +@cindex{multipart}@strong{multipart} (@ref{multipart}) +@item +@cindex{message}@strong{message} +@end itemize -$B$3$3$G$O!"(Btext/plain $B$J$I$N(B type/subtype $B$NAH$r$7$P$7$P(B -@cindex{content-type/subtype}@strong{content-type/subtype} $B$H=q$/!#(B -@end quotation +And there are various subtypes, for example, application/octet-stream, +audio/basic, image/jpeg, multipart/mixed (@ref{multipart/mixed}), +text/plain (@ref{text/plain}), video/mpeg...@refill -content-type $B$O!"(BRFC 1521 $B$GDj5A$5$l$F$$$k$b$N$K2C$($F!"EPO?$9$k$3$H$b$G(B -$B$-$k!#8=:_!"EPO?$5$l$F$$$k$b$N$O(B MEDIA TYPES -(ftp://ftp.isi.edu/in-notes/iana/assignments/media-types) $B$G;2>H$G$-$k!#(B +You can refer registered media types at MEDIA TYPES +(ftp://ftp.isi.edu/in-notes/iana/assignments/media-types).@refill -$B$^$?!"(Btype $B$b$7$/$O(B subtype $B$K!"A0$K(B `x-' $B$rIU$1$?(B -@cindex{x-token}@strong{x-token} $B$rMQ$$$k$3$H$K$h$j!"EPO?$5$l$F$$$J$$$b(B -$B$N$r;dE*$KMQ$$$k$3$H$b$G$-$k!#$7$+$7!"EvA3$N$3$H$J$,$i!"$3$&$7$?;dE*$J(B -content-type $B$ONJ2r$rF@$?<T$N4V$G$7$+2r<a$G$-$J$$$N$GMxMQ$K$OCm0U$9$k$3(B -$B$H!#(B@refill +In addition, you can use private type or subtype using +@cindex{x-token}@strong{x-token}, which as the prefix `x-'. However you +can not use them in public.@refill (cf. @ref{Content-Type field}) -@node Content-Type field, Emacs, content-type, Glossary +@node Content-Type field, Emacs, media type, Glossary @subsection Content-Type field -Header field to represent information about part, such as content-type -(@ref{content-type}), MIME charset (@ref{MIME charset}). It is defined -in RFC 1521 (@ref{RFC 1521}). +Header field to represent information about body, such as media type +(@ref{media type}), MIME charset (@ref{MIME charset}). It is defined in +RFC 2045 (@ref{RFC 2045}). @noindent @strong{[Memo]} @quotation Historically, Content-Type field was proposed in RFC 1049. In it, -Content-Type did not distinguish type and subtype. However RFC 1521 -parser may be able to accept RFC 1049 based Content-Type as unknown -type. +Content-Type did not distinguish type and subtype. However MIME parser +may be able to accept RFC 1049 based Content-Type as unknown type. @end quotation @@ -548,15 +498,15 @@ GNU Emacs $B$NJQ<o$NAm>N$H$9$k!#(B @subsection encoded-word Representation non ASCII (@ref{ASCII}) characters in header. It is -defined in @cindex{RFC 1522}@strong{RFC 1522}.@refill +defined in @cindex{RFC 2047}@strong{RFC 2047}.@refill -@cindex{Standards Track}@cindex{RFC 1522} +@cindex{Standards Track}@cindex{RFC 2047} @noindent -[RFC 1522] +[RFC 2047] @quotation -K. Moore, ``MIME (Multipurpose Internet Mail Extensions) Part Two: -Message Header Extensions for Non-ASCII Text'', September 1993, -Standards Track. +K. Moore, ``MIME (Multipurpose Internet Mail Extensions) Part Three: +Message Header Extensions for Non-ASCII Text'', November 1996, Standards +Track (obsolete RFC 1521,1522,1590). @end quotation @@ -826,13 +776,14 @@ Latin Alphabet No.1'', ISO 8859-1:1987. @node iso-8859-1, ISO 8859-2, ISO 8859-1, Glossary @subsection iso-8859-1 -$B@>2$=t8l$J$I$rI=8=$9$k$?$a$N(B MIME charset (@ref{MIME charset}) $B$N#1$D!#(B +@cindex{iso-8859-1}@strong{iso-8859-1} is a MIME charset (@ref{MIME +charset}) for west-European languages written by Latin script.@refill ISO 2022 (@ref{ISO 2022}) $B$K4p$$$F!"(BASCII (@ref{ASCII}) $B$K(B ISO 8859-1 (@ref{ISO 8859-1}) $B$r(B 8bit (@ref{8bit}) $B$GId9f3HD%(B (@ref{Code extension})$B$7$F$$$k!#(B@refill -RFC 1521 (@ref{RFC 1521}) $B$GDj5A$5$l$F$$$k!#(B +It is defined in RFC 2046 (@ref{RFC 2046}). @node ISO 8859-2, iso-8859-2, iso-8859-1, Glossary @@ -855,13 +806,14 @@ Latin alphabet No.2'', ISO 8859-2:1987. @node iso-8859-2, ISO 8859-3, ISO 8859-2, Glossary @subsection iso-8859-2 -$BEl2$=t8l$rI=8=$9$k$?$a$N(B MIME charset (@ref{MIME charset}) $B$N#1$D!#(B +@cindex{iso-8859-2}@strong{iso-8859-2} is a MIME charset (@ref{MIME +charset}) for east-European languages written by Latin script.@refill ISO 2022 (@ref{ISO 2022}) $B$K4p$$$F!"(BASCII (@ref{ASCII}) $B$K(B ISO 8859-2 (@ref{ISO 8859-2}) $B$r(B 8bit (@ref{8bit}) $B$GId9f3HD%(B (@ref{Code extension})$B$7$F$$$k!#(B@refill -RFC 1521 (@ref{RFC 1521}) $B$GDj5A$5$l$F$$$k!#(B +It is defined in RFC 2046 (@ref{RFC 2046}). @node ISO 8859-3, ISO 8859-4, iso-8859-2, Glossary @@ -911,13 +863,14 @@ Latin/Cyrillic alphabet'', ISO 8859-5:1988. @node iso-8859-5, ISO 8859-6, ISO 8859-5, Glossary @subsection iso-8859-5 -$B%-%j%kJ8;z$rI=8=$9$k$?$a$N(B MIME charset (@ref{MIME charset}) $B$N#1$D!#(B +@cindex{iso-8859-5}@strong{iso-8859-5} is a MIME charset (@ref{MIME +charset}) for Cyrillic script.@refill ISO 2022 (@ref{ISO 2022}) $B$K4p$$$F!"(BASCII (@ref{ASCII}) $B$K(B ISO 8859-5 (@ref{ISO 8859-5}) $B$r(B 8bit (@ref{8bit}) $B$GId9f3HD%(B (@ref{Code extension})$B$7$F$$$k!#(B@refill -RFC 1521 (@ref{RFC 1521}) $B$GDj5A$5$l$F$$$k!#(B +It is defined in RFC 2046 (@ref{RFC 2046}). @node ISO 8859-6, ISO 8859-7, iso-8859-5, Glossary @@ -953,13 +906,14 @@ Latin/Greek alphabet'', ISO 8859-7:1987. @node iso-8859-7, ISO 8859-8, ISO 8859-7, Glossary @subsection iso-8859-7 -$B%.%j%7%"8l$rI=8=$9$k$?$a$N(B MIME charset (@ref{MIME charset}) $B$N#1$D!#(B +@cindex{iso-8859-7}@strong{iso-8859-7} is a MIME charset (@ref{MIME +charset}) for Greek script.@refill ISO 2022 (@ref{ISO 2022}) $B$K4p$$$F!"(BASCII (@ref{ASCII}) $B$K(B ISO 8859-7 (@ref{ISO 8859-7}) $B$r(B 8bit (@ref{8bit}) $B$GId9f3HD%(B (@ref{Code extension})$B$7$F$$$k!#(B@refill -RFC 1947 $B$GDj5A$5$l$F$$$k!#(B +It is defined in RFC 1947. @cindex{iso-8859-7}@cindex{Informational}@cindex{RFC 1947} @noindent @@ -1156,9 +1110,11 @@ Interchange (Hangul and Hanja)'', KS C 5601:1987. @node message/rfc822, method, message, Glossary @subsection message/rfc822 -$BEAE}E*$J(B RFC 934 (@ref{RFC 934}) $B$KBe$o$j!"(BRFC 822 (@ref{RFC 822}) $B$GDj(B -$B5A$5$l$k(B mail $B$rI=$9(B MIME $B$N7A<0!#(BRFC 1521 (@ref{RFC 1521}) $B$GDj5A$5$l$F(B -$B$$$k!#(B +@cindex{message/rfc822}@strong{message/rfc822} indicates that the body +contains an encapsulated message, with the syntax of an RFC 822 +(@ref{RFC 822}) message. It is the replacement of traditional RFC 934 +(@ref{RFC 934}) encapsulation. It is defined in RFC 2046 (@ref{RFC +2046}). @node method, MIME, message/rfc822, Glossary @@ -1176,26 +1132,45 @@ method}@strong{external method} $B$,$"$k!#(B@refill @node MIME, MIME charset, method, Glossary @subsection MIME -@cindex{Multipurpose Internet Mail Extensions}@strong{Multipurpose -Internet Mail Extensions} $B$NN,$G!"(BInternet $B$N(B mail $B$d(B news $B$G(B us-ascii -plain text (@ref{us-ascii}) $B0J30$NJ8;z$r;H$&$?$a$N(B RFC 822 (@ref{RFC -822}) $B$KBP$9$k3HD%!#(B@refill +MIME stands for @cindex{Multipurpose Internet Mail +Extensions}@strong{Multipurpose Internet Mail Extensions}, it is an +extension for RFC 822 (@ref{RFC 822}).@refill -RFC 1521 (@ref{RFC 1521}) $B$H(B RFC 1522 (@ref{encoded-word}) $B$GDj5A$5$l$F(B -$B$$$k!#(B@refill +According to RFC 2045:@refill -(cf. @ref{What is MIME?}) +STD 11, RFC 822, defines a message representation protocol specifying +considerable detail about US-ASCII message headers, and leaves the +message content, or message body, as flat US-ASCII text. This set of +documents, collectively called the Multipurpose Internet Mail +Extensions, or MIME, redefines the format of messages to allow +for@refill + +@enumerate +@item +textual message bodies in character sets other than US-ASCII, +@item +an extensible set of different formats for non-textual message +bodies, +@item +multi-part message bodies, and +@item +textual header information in character sets other than US-ASCII. +@end enumerate +It is defined in RFC 2045 (@ref{RFC 2045}), RFC 2046 (@ref{RFC 2046}), +RFC 2047 (@ref{encoded-word}), RFC 2048 (@ref{RFC 2048}) and RFC 2049 +(@ref{RFC 2049}). + @node MIME charset, MTA, MIME, Glossary @subsection MIME charset -Content-Type field (@ref{Content-Type field}) $B$d(B encoded-word -(@ref{encoded-word}) $B$N(B charset parameter $B$GMQ$$$i$l$kEPO?$5$l$?Id9f2=J8(B -$B;z=89g(B (@ref{Coded character set})$B!#(B@refill +Coded character set (@ref{Coded character set}) used in Content-Type +field (@ref{Content-Type field}) or charset parameter of encoded-word +(@ref{encoded-word}).@refill -RFC 1521 (@ref{RFC 1521}) $B$GDj5A$5$l$F$$$k!#(B@refill +It is defined in RFC 2045 (@ref{RFC 2045}).@refill iso-2022-jp (@ref{iso-2022-jp}) $B$d(B euc-kr (@ref{euc-kr}) $B$O$=$N#1$D!#(B $B!J$3$3$G$O!"(BMIME charset $B$OJ8;z=89g(B (@ref{Character set})$B$H6hJL$7$F>.J8(B @@ -1247,12 +1222,11 @@ Enhancement to GNU Emacs'', Proc. of INET'93, August, 1993.@refill @node multipart, multipart/alternative, MULE, Glossary @subsection Multipart -$B#1$D$N(B message (@ref{message}) $B$KJ#?t$N(B part $B$rF~$l$k$?$a$N(B MIME -(@ref{MIME}) $B$K$*$1$kI=8=K!!"$b$7$/$O!"J#?t$N(B part $B$+$i$J$k(B message $B$r;X(B -$B$9!#(B(cf. @ref{content-type}) @refill +@cindex{multipart}@strong{multipart} means media type (@ref{media type}) +to insert multiple entities (@ref{entities}) in a single body. Or it +also indicates a message consists of multiple entities.@refill -$B8=:_!"Dj5A$5$l$F$$$k(B @cindex{multipart}@strong{multipart} $B$H$7$F$O!"(BRFC -1521 (@ref{RFC 1521}) $B$GDj5A$5$l$?(B +There are following subtypes registered in RFC 2046 (@ref{RFC 2046}): @itemize @bullet @item @@ -1266,7 +1240,7 @@ multipart/parallel (@ref{multipart/parallel}) @end itemize @noindent -$B$N$[$+(B RFC 1847 (@ref{Security multipart}) $B$GDj5A$5$l$?(B +and registered in RFC 1847 (@ref{Security multipart}): @itemize @bullet @item @@ -1275,33 +1249,35 @@ multipart/signed (@ref{multipart/signed}) multipart/encrypted (@ref{multipart/encrypted}) @end itemize -@noindent -$B$J$I$,$"$k!#(B @node multipart/alternative, multipart/digest, multipart, Glossary @subsection multipart/alternative -multipart (@ref{multipart}) $B$N#1$D$G!"F1$8>pJs$r0[$C$?7A<0$GF~$l!"A*Br;h(B -$B$H$9$k>l9g$KMQ$$$k!#(B@refill +@cindex{multipart/digest}@strong{multipart/digest} is one of multipart +(@ref{multipart}) media types. This type is syntactically identical to +multipart/mixed (@ref{multipart/mixed}), but the semantics are +different. In particular, each of the body parts is an ``alternative'' +version of the same information.@refill -(cf. @ref{RFC 1521}) +(cf. @ref{RFC 2046}) @node multipart/digest, multipart/encrypted, multipart/alternative, Glossary @subsection multipart/digest -multipart (@ref{multipart}) $B$N#1$D$G!"4^$^$l$k(B part $B$N(B default $B$N(B -content-type (@ref{content-type}) $B$,(B multipart/mixed -(@ref{multipart/mixed}) $B$J$I$N>l9g(B text/plain (@ref{text/plain}) $B$G$"$k(B -$B$N$KBP$7!"(B@cindex{multipart/digest}@strong{multipart/digest}$B$G$O(B -message/rfc822 (@ref{message/rfc822}) $B$,MQ$$$i$l$kE@$,0[$J$k!#(B@refill +@cindex{multipart/digest}@strong{multipart/digest} is one of multipart +(@ref{multipart}) media types. This type is syntactically identical to +multipart/mixed (@ref{multipart/mixed}), but the semantics are +different. In particular, in a digest, the default Content-Type value +for a body part is changed from text/plain (@ref{text/plain}) to +message/rfc822 (@ref{message/rfc822}).@refill -$B$3$l$OEAE}E*$J(B RFC 1153 (@ref{RFC 1153}) $B$K4p$E$/(B encapsulation -(@ref{encapsulation}) $B$KBe$o$k$b$N$G$"$k!#(B@refill +This is the replacement of traditional RFC 1153 (@ref{RFC 1153}) based +encapsulation (@ref{encapsulation}).@refill -(cf. @ref{RFC 1521}) +(cf. @ref{RFC 2046}) @@ -1318,20 +1294,24 @@ RFC 1847 $B$GDj5A$5$l$?(B Security multipart (@ref{Security multipart}) $B$N# @node multipart/mixed, multipart/parallel, multipart/encrypted, Glossary @subsection multipart/mixed -multipart (@ref{multipart}) $B$N<gMW$J(B subtype $B$G!"J#?t$N(B part $B$r=g=xIU$1(B -$B$FJB$Y$k>l9g$KMQ$$$k!#(B@refill +Primary and default subtype of multipart (@ref{multipart}), it is used +when the body parts are independent and need to be bundled in a +particular order.@refill -(cf. @ref{RFC 1521}) +(cf. @ref{RFC 2046}) @node multipart/parallel, multipart/signed, multipart/mixed, Glossary @subsection multipart/parallel -multipart (@ref{multipart}) $B$N#1$D$G!"J#?t$N(B part $B$r=g=xIU$1$:$K4^$a$k>l(B -$B9g$KMQ$$$k!#(B@refill +@cindex{multipart/parallel}@strong{multipart/parallel} is a subtype of +multipart (@ref{multipart}). This type is syntactically identical to +multipart/mixed (@ref{multipart/mixed}), but the semantics are +different. In particular, in a parallel entity, the order of body parts +is not significant.@refill -(cf. @ref{RFC 1521}) +(cf. @ref{RFC 2046}) @@ -1430,16 +1410,15 @@ M. Elkins, ``MIME Security with Pretty Good Privacy (PGP)'', October @node Quoted-Printable, RFC 821, PGP/MIME, Glossary @subsection Quoted-Printable -RFC 1521 (@ref{RFC 1521}) $B$GDj5A$5$l$F$$$k(B MIME (@ref{MIME}) $B$K$*$1$k(B -binary data (@ref{binary}) $B$N(B network $B$G$NJQ49K!$N#1$D!#(B@refill +@cindex{Quoted-Printable}@strong{Quoted-Printable} is a transfer +encoding method of MIME (@ref{MIME}) defined in RFC 2045 (@ref{RFC +2045}).@refill -`=' $B$d@)8fJ8;z$d(B 128 $B0J>e$NJ8;z$J$I$O(B `=AF' $B$N$h$&$K(B `=' $B$N8e$KB3$/(B 16 -$B?J?t$GI=8=$9$k!#$3$N$?$a!"(BASCII (@ref{ASCII}) $BJ8;zCf?4$N(B data $B$G$O(B -Base64 (@ref{Base64}) $B$KHf$Y$k$H2DFI@-$,9b$/$J$k2DG=@-$,$"$k!#(B@refill +If the data being encoded are mostly US-ASCII text, the encoded form of +the data remains largely recognizable by humans.@refill + +(cf. @ref{Base64}) -$B$7$+$7$J$,$i!"(BEBCDIC $B$K$OB8:_$7$J$$J8;z$rMxMQ$9$k>l9g!"(BEBCDIC $B$rMxMQ$7(B -$B$F$$$k(B network $B$G$O0BA4$KE>Aw$9$k$3$H$,$G$-$:!"(BBase64 $B$KHf$Y$F0BA4@-$O(B -$BDc$$!#(B @node RFC 821, RFC 822, Quoted-Printable, Glossary @@ -1521,7 +1500,7 @@ December 1987, (obsolete RFC 850). -@node RFC 1153, RFC 1521, RFC 1036, Glossary +@node RFC 1153, RFC 1557, RFC 1036, Glossary @subsection RFC 1153 $BJ#?t$N(B Internet mail (@ref{RFC 822}) $B$r(B @@ -1544,26 +1523,7 @@ F. Wancho, ``Digest Message Format'', April 1990. -@node RFC 1521, RFC 1557, RFC 1153, Glossary -@subsection RFC 1521 - -MIME (@ref{MIME}) $B$rDj5A$7$F$$$k(B RFC $B$N#1$D!#(B - -@cindex{Standards Track}@cindex{RFC 1521} -@noindent -[RFC 1521] -@quotation -N. Borenstein and N. Freed, ``MIME (Multipurpose Internet Mail -Extensions) Part One: Mechanisms for Specifying and Describing the -Format of Internet Message Bodies'', September 1993, Standards Track -(obsolete RFC 1341). -@end quotation - - -(RFC 1522 (@ref{encoded-word})) - - -@node RFC 1557, RFC 1922, RFC 1521, Glossary +@node RFC 1557, RFC 1922, RFC 1153, Glossary @subsection RFC 1557 euc-kr (@ref{euc-kr}) $B$H(B iso-2022-kr (@ref{iso-2022-kr}) $B$H$$$&4Z9q8l$N(B @@ -1579,7 +1539,7 @@ Messages'', December 1993, Informational. -@node RFC 1922, plain text, RFC 1557, Glossary +@node RFC 1922, RFC 2045, RFC 1557, Glossary @subsection RFC 1922 iso-2022-cn (@ref{iso-2022-cn}), iso-2022-cn-ext @@ -1602,7 +1562,63 @@ Informational. -@node plain text, Security multipart, RFC 1922, Glossary +@node RFC 2045, RFC 2046, RFC 1922, Glossary +@subsection RFC 2045 + +@cindex{Standards Track}@cindex{RFC 2045} +@noindent +[RFC 2045] +@quotation +N. Freed and N. Borenstein, ``Multipurpose Internet Mail Extensions +(MIME) Part One: Format of Internet Message Bodies'', November 1996, +Standards Track (obsolete RFC 1521, 1522, 1590). +@end quotation + + + +@node RFC 2046, RFC 2048, RFC 2045, Glossary +@subsection RFC 2046 + +@cindex{Standards Track}@cindex{RFC 2046} +@noindent +[RFC 2046] +@quotation +N. Freed and N. Borenstein, ``Multipurpose Internet Mail Extensions +(MIME) Part Two: Media Types'', November 1996, Standards Track (obsolete +RFC 1521, 1522, 1590). +@end quotation + + + +@node RFC 2048, RFC 2049, RFC 2046, Glossary +@subsection RFC 2048 + +@cindex{Standards Track}@cindex{RFC 2048} +@noindent +[RFC 2048] +@quotation +N. Freed, J. Klensin and J. Postel, ``Multipurpose Internet Mail +Extensions (MIME) Part Four: Registration Procedures'', November 1996, +Standards Track (obsolete RFC 1521, 1522, 1590). +@end quotation + + + +@node RFC 2049, plain text, RFC 2048, Glossary +@subsection RFC 2049 + +@cindex{Standards Track}@cindex{RFC 2049} +@noindent +[RFC 2049] +@quotation +N. Freed and N. Borenstein, ``Multipurpose Internet Mail Extensions +(MIME) Part Five: Conformance Criteria and Examples'', November 1996, +Standards Track (obsolete RFC 1521, 1522, 1590). +@end quotation + + + +@node plain text, Security multipart, RFC 2049, Glossary @subsection plain text $B=qBN$dAHHG$K4X$9$k>pJs$r;}$?$J$$(B $BJ8;zId9f(B(@ref{Coded character set})$B$N$_(B @@ -1634,9 +1650,9 @@ Multiparts for MIME: Multipart/Signed and Multipart/Encrypted'', October @node text/enriched, text/plain, Security multipart, Glossary @subsection text/enriched -RFC 1521 (@ref{RFC 1521}) $B$GDj5A$5$l$?(B -@cindex{text/richtext}@strong{text/richtext} $B$KBe$o$C$F!"=qBN$dAHHG$K4X(B -$B$9$k>pJs$r;}$C$?(B text$B$rI=8=$9$k$?$a$N(B content-type (@ref{content-type}). +RFC 1521 $B$GDj5A$5$l$?(B @cindex{text/richtext}@strong{text/richtext} $B$KBe(B +$B$o$C$F!"=qBN$dAHHG$K4X$9$k>pJs$r;}$C$?(B text$B$rI=8=$9$k$?$a$N(B media type +(@ref{media type}). @cindex{text/enriched}@cindex{RFC 1896} @noindent @@ -1651,13 +1667,16 @@ February 1996, (obsolete RFC 1563). @node text/plain, tm-kernel, text/enriched, Glossary @subsection text/plain -RFC 1521 (@ref{RFC 1521}) $B$GDj5A$5$l$?!"(Bplain text (@ref{plain text}) $B$r(B -$BI=8=$9$k$?$a$N(B content-type (@ref{content-type}).@refill +@cindex{text/plain}@strong{text/plain} is a media type (@ref{media +type}) for plain text (@ref{plain text}), defined in RFC 2046 (@ref{RFC +2046}).@refill + +The default media type of ``text/plain; charset=us-ascii'' for Internet +mail describes existing Internet practice. That is, it is the type of +body defined by RFC 822 (@ref{RFC 822}).@refill + +(cf. @ref{MIME charset}) (cf. @ref{us-ascii}) -$BHs(B MIME message $B$J$I$N(B content-type $B$,Dj5A$5$l$J$$(B part $B$O(B MIME charset -(@ref{MIME charset}) $B$,(B us-ascii (@ref{us-ascii}) $B$G$"$k(B -@cindex{text/plain}@strong{text/plain} $B$N(B part $B$G$"$k$H8+Pv$5$l$k$3$H$K(B -$B$J$C$F$$$k!#(B @node tm-kernel, tm-MUA, text/plain, Glossary @@ -1958,9 +1977,9 @@ e-mail to: @itemize @bullet @item - $BF|K\8l(B <tm-ja-admin@@chamonix.jaist.ac.jp> + Japanese <tm-ja-admin@@chamonix.jaist.ac.jp> @item - $B1Q8l(B <tm-en-admin@@chamonix.jaist.ac.jp> + English <tm-en-admin@@chamonix.jaist.ac.jp> @end itemize @noindent diff --git a/doc/tm-ja.info b/doc/tm-ja.info index 81584dc..2ba99e8 100644 --- a/doc/tm-ja.info +++ b/doc/tm-ja.info @@ -50,76 +50,11 @@ tm $B$O(B GNU Emacs $B$G(B MIME $B$r3Z$7$`$?$a$N(B package $B$G$9!#(Btm * Menu: -* What is MIME?:: $B$H$3$m$G!"(BMIME $B$C$F$$$C$?$$2?!)(B -* How is MIME?:: MIME $B$G$I$s$J$3$H=PMh$k$N!)(B * Glossary:: $BMQ8l(B  -File: tm-ja.info, Node: What is MIME?, Next: How is MIME?, Prev: Introduction, Up: Introduction - -$B$H$3$m$G!"(BMIME $B$C$F$$$C$?$$2?!)(B -=============================== - -*MIME* $B$H$O(B *Multipurpose Internet Mail Extensions* $B$NN,$G!"=>Mh$N!"(B -$B4pK\E*$K(B us-ascii (*Note us-ascii::) $B$N(B plain text (*Note plain text::) -$B$G$"$C$?(B Internet Mail/News $B$KBP$9$k3HD%$K$J$C$F$$$^$9!#(B - -MIME $B$K$O!"(BRFC 1521 (*Note RFC 1521::) $B$G5,Dj$5$l$F$$$kB?L\E*(Bmessage $B$N(B -$BB&LL$H!"(BRFC 1522 (*Note encoded-word::) $B$G5,Dj$5$l$F$$$k(Bmessage header -$B$K$*$1$kHs(B ASCII $BJ8;z$NI=8=K!$N$h$&$J!"B?8@8l2=$NB&LL$,$"$j$^$9!#(B - - - - -File: tm-ja.info, Node: How is MIME?, Next: Glossary, Prev: What is MIME?, Up: Introduction - -MIME $B$G$I$s$J$3$H=PMh$k$N!)(B -=========================== - -$B$^$:!"B?L\E*(B message $B$NB&LL$r9M$($k$H!"=>Mh$N(B Internet Mail/News $B$,4pK\(B -$BE*$K(B us-ascii (*Note us-ascii::) $B$N(B plain text (*Note plain text::) $B$7$+(B -$BI=8=$G$-$J$+$C$?$N$KBP$7$F!"3($d2;@<$dF02h$J$I$NMM!9$J(B data $B$rI=8=$9$k$3(B -$B$H$,$G$-$^$9!#(B - -$B$^$?!"LLGr$$$3$H$K!"(Bftp (*Note FTP::) $B$d(B ftp mail $B$r$7$?$j!"(Bfile $B$r<h$j(B -$B=P$7$?$j!"(Bpatch $B$rEv$F$?$j!"$H$$$C$?!"!X<jB3$-!Y$rAw$k$3$H$,$G$-$^$9!#(B - -$B!t(B $B$b$C$H$b!"$3$&$$$&$N$O!"$"$k0UL#$G$O4m81$@$C$?$j$9$k$N$G$9$,!#(B - -$B$3$&$7$?(B message $B$O!"FbMF$N<oN`$r(B -*Content-Type* (*Note Content-Type field::) $B$H(B -$B$$$&(B field $B$K=q$$$?(B message $B$N7?$G;XDj$7$^$9!#$9$k$H!"<u$1<j$O3F(B -content-type (*Note content-type::) $B$KBP1~$7$?=hM}$N<oN`$r@_Dj$7$F$*$$$F!"(B -message $B$r!XFI$`!Y$@$1$G!"3($dF02h$r8+$?$j!"2;$rLD$i$7$?$j!"(Bftp $B$G(B file -$B$r<h$C$?$j!"(Bfile$B$r<h$j=P$7$?$j$G$-$^$9!#(B - -$B$^$?!"$"$k(B message $B$KJ#?t$N(B content-type $B$,B8:_$9$k(B -*Multipart* (*Note multipart::) $B$N(B message $B$H$$$&(B -$B$N$b2DG=$G!"0l$D$N(B message $B$NCf$K!"3($H2;$HJ8>O$rF~$l$?$j$H$$$C$?$h$&$J(B -$B$3$H$,$G$-$^$9!#(B - -MIME $B$K$O$3$N$h$&$J!X@k8@!Y$N;WA[$,$"$k$h$&$K;W$o$l$^$9!#$D$^$j!"(B -us-ascii (*Note us-ascii::) $B$r!V%"%k%U%!%Y%C%H!W$H$9$k(B MIME $B$H$$$&(B -message $B5-=R8@8l$G!"$$$m$$$m$J$b$N$r5-=R$7$F$$$3$&$H$$$&$3$H$G$9!#$3$l$O(B -RFC 1522 (*Note encoded-word::) $B$G5,Dj$5$l$?(B encoded-word $B$G$b$$$($k$H;W(B -$B$$$^$9!#(B - -$B$=$7$F!"<u$1<j$O!"M}2r$G$-$J$$$b$N$OL5;k$9$k$,!"$=$N7k2L!"(Bdata $B$r2u$9$3(B -$B$H$O$7$J$$$H$$$&$b$N$,$"$j$^$9!#(B - -$BNc$($P!"(BASCII (*Note ASCII::) $B$7$+I=<($G$-$J$$4D6-$G(B JIS X0208 (*Note -JIS X0208::) $B$H(B ISO 8859-1 (*Note ISO 8859-1::) $B$,:.$8$C$?%F%-%9%H$r$b$i$C(B -$B$?$i:$$kLu$G$9$,!"$=$&$$$&;~$@$1B?8@8lC<Kv$r3+$/$H$$$&$h$&$J5;$,;H$($^$9!#(B - -$B$b$A$m$s!"(BMULE (*Note MULE::) $B$N$h$&$JB?8@8l4D6-$K$*$$$F$b(B MUA (*Note -MUA::) $B$KBP$7$FL@<(E*$K(B MIME charset (*Note MIME charset::) $B$r<($9$3$H$O(B -$BM-1W$G$7$g$&!#(B - - - - -File: tm-ja.info, Node: Glossary, Prev: How is MIME?, Up: Introduction +File: tm-ja.info, Node: Glossary, Prev: Introduction, Up: Introduction $BMQ8l(B ==== @@ -143,7 +78,7 @@ tm $B$G;H$o$l$F$$$kMQ8l$K$D$$$F2r@b$7$^$9!#(B * Coded character set:: Coded character set$B!JId9f2=J8;z=89g!K(B, Character code$B!JJ8;zId9f!K(B * Code extension:: Code extension$B!JId9f3HD%!K(B * Content-Disposition:: Content-Disposition field -* content-type:: +* media type:: * Content-Type field:: * Emacs:: * encoded-word:: @@ -204,9 +139,12 @@ tm $B$G;H$o$l$F$$$kMQ8l$K$D$$$F2r@b$7$^$9!#(B * RFC 934:: * RFC 1036:: * RFC 1153:: -* RFC 1521:: RFC 1521 * RFC 1557:: * RFC 1922:: +* RFC 2045:: +* RFC 2046:: +* RFC 2048:: +* RFC 2049:: * plain text:: * Security multipart:: * text/enriched:: @@ -343,7 +281,7 @@ File: tm-ja.info, Node: Base64, Next: binary, Prev: ASCII, Up: Glossary Base64 ------ -RFC 1521 (*Note RFC 1521::) $B$GDj5A$5$l$F$$$k(B MIME (*Note MIME::) $B$K$*$1(B +RFC 2045 (*Note RFC 2045::) $B$GDj5A$5$l$F$$$k(B MIME (*Note MIME::) $B$K$*$1(B $B$k(B binary data (*Note binary::) $B$N(B network $B$G$NJQ49K!$N#1$D!#(B $B!X(B64 $B?J?t!Y$H$$$&0UL#$G!"(B3 byte $B$N(B data $B$r(B 0 $B$+$i(B 63 $B$N?t$rI=$9(B ASCII @@ -467,7 +405,7 @@ Code extension$B!JId9f3HD%!K(B  -File: tm-ja.info, Node: Content-Disposition, Next: content-type, Prev: Code extension, Up: Glossary +File: tm-ja.info, Node: Content-Disposition, Next: media type, Prev: Code extension, Up: Glossary Content-Disposition field ------------------------- @@ -484,23 +422,28 @@ MIME::) $B$N3HD%$N#1$D!#(B  -File: tm-ja.info, Node: content-type, Next: Content-Type field, Prev: Content-Disposition, Up: Glossary +File: tm-ja.info, Node: media type, Next: Content-Type field, Prev: Content-Disposition, Up: Glossary -content-type ------------- +media type +---------- -MIME (*Note MIME::) $B$K$*$1$k(B part (*Note part::) $B$N<oN`!#(B +MIME (*Note MIME::) $B$K$*$1$k(B entity (*Note entity::) $B$N<oN`!#(B *type* $B$H(B *subtype* $B$+$i$J$k!#(B -RFC 1521 (*Note RFC 1521::) $B$GDj5A$5$l$F$$$k!#(B +RFC 2046 (*Note RFC 2046::) $B$GDj5A$5$l$F$$$k!#(B + +type $B$OI8=`$G$O(B -type $B$OI8=`$G$O(B *application*, -*audio*, *image*, -*message*, *multipart* -(*Note multipart::), *text*, -*video* $B$,Dj5A$5$l!"$=$l$>$l$K$O(B -application/octet-stream, audio/basic, image/jpeg, multipart/mixed -(*Note multipart/mixed::), text/plain (*Note text/plain::), video/mpeg -$B$J$I$N$5$^$6$^$J(B subtype $B$,Dj5A$5$l$F$$$k!#(B + * *text* + * *image* + * *audio* + * *video* + * *application* + * *multipart* (*Note multipart::) + * *message* + +$B$,Dj5A$5$l!"$=$l$>$l$K$O(B application/octet-stream, audio/basic, +image/jpeg, multipart/mixed (*Note multipart/mixed::), text/plain (*Note +text/plain::), video/mpeg $B$J$I$N$5$^$6$^$J(B subtype $B$,Dj5A$5$l$F$$$k!#(B *[$BCm0U(B]* @@ -508,8 +451,8 @@ application/octet-stream, audio/basic, image/jpeg, multipart/mixed *content-type/subtype* $B$H=q$/!#(B -content-type $B$O!"(BRFC 1521 $B$GDj5A$5$l$F$$$k$b$N$K2C$($F!"EPO?$9$k$3$H$b$G(B -$B$-$k!#8=:_!"EPO?$5$l$F$$$k$b$N$O(B MEDIA TYPES +media type $B$O!"(BRFC 2046 $B$GDj5A$5$l$F$$$k$b$N$K2C$($F!"EPO?$9$k$3$H$b$G$-(B +$B$k!#8=:_!"EPO?$5$l$F$$$k$b$N$O(B MEDIA TYPES (ftp://ftp.isi.edu/in-notes/iana/assignments/media-types) $B$G;2>H$G$-$k!#(B $B$^$?!"(Btype $B$b$7$/$O(B subtype $B$K!"A0$K(B `x-' $B$rIU$1$?(B @@ -524,20 +467,20 @@ content-type $B$ONJ2r$rF@$?<T$N4V$G$7$+2r<a$G$-$J$$$N$GMxMQ$K$OCm0U$9$k$3(B  -File: tm-ja.info, Node: Content-Type field, Next: Emacs, Prev: content-type, Up: Glossary +File: tm-ja.info, Node: Content-Type field, Next: Emacs, Prev: media type, Up: Glossary Content-Type field ------------------ -content-type (*Note content-type::) $B$d(B MIME charset (*Note MIME -charset::) $B$J$I$N(B part $B$K4X$9$k>pJs$rI=8=$9$k$?$a$N(B field. RFC 1521 -(*Note RFC 1521::) $B$GDj5A$5$l$F$$$k!#(B +media type (*Note media type::) $B$d(B MIME charset (*Note MIME charset::) +$B$J$I$N(B part $B$K4X$9$k>pJs$rI=8=$9$k$?$a$N(B field. RFC 2045 (*Note RFC +2045::) $B$GDj5A$5$l$F$$$k!#(B *[Memo]* $BNr;KE*$K$O(B RFC 1049 $B$G(B Content-Type field $B$,Ds0F$5$l$F$$$k!#C"$7!"(B - $B$3$3$G$O(B type $B$H(B subtype $B$N6hJL$O$J$$!#$7$+$7!"J8K!E*$K$O(B RFC 1521 - parser$B$O(B RFC 1049 $B$K4p$E$/(B message $B$rL$CN$N(B content-type $B$r;}$C$?(B + $B$3$3$G$O(B type $B$H(B subtype $B$N6hJL$O$J$$!#$7$+$7!"J8K!E*$K$O(B MIME + parser $B$O(B RFC 1049 $B$K4p$E$/(B message $B$rL$CN$N(B content-type $B$r;}$C$?(B message $B$H$7$F(B parse $B$G$-$k$@$m$&!#(B @@ -586,13 +529,13 @@ File: tm-ja.info, Node: encoded-word, Next: encapsulation, Prev: Emacs, Up: Glos encoded-word ------------ -header $B$K$*$1$kHs(B ASCII (*Note ASCII::) $BJ8;z$NI=8=!#(B*RFC 1522* $B$GDj5A$5(B +header $B$K$*$1$kHs(B ASCII (*Note ASCII::) $BJ8;z$NI=8=!#(B*RFC 2047* $B$GDj5A$5(B $B$l$F$$$k!#(B -[RFC 1522] K. Moore, "MIME (Multipurpose Internet Mail Extensions) - Part Two: Message Header Extensions for Non-ASCII Text", September - 1993, Standards Track. +[RFC 2047] K. Moore, "MIME (Multipurpose Internet Mail Extensions) + Part Three: Message Header Extensions for Non-ASCII Text", November + 1996, Standards Track (obsolete RFC 1521,1522,1590). @@ -881,7 +824,7 @@ ISO 2022 (*Note ISO 2022::) $B$K4p$$$F!"(BASCII (*Note ASCII::) $B$K(B ISO 8859-1 (*Note ISO 8859-1::) $B$r(B 8bit (*Note 8bit::) $B$GId9f3HD%(B (*Note Code extension::)$B$7$F$$$k!#(B -RFC 1521 (*Note RFC 1521::) $B$GDj5A$5$l$F$$$k!#(B +RFC 2046 (*Note RFC 2046::) $B$GDj5A$5$l$F$$$k!#(B @@ -914,7 +857,7 @@ ISO 2022 (*Note ISO 2022::) $B$K4p$$$F!"(BASCII (*Note ASCII::) $B$K(B ISO 8859-2 (*Note ISO 8859-2::) $B$r(B 8bit (*Note 8bit::) $B$GId9f3HD%(B (*Note Code extension::)$B$7$F$$$k!#(B -RFC 1521 (*Note RFC 1521::) $B$GDj5A$5$l$F$$$k!#(B +RFC 2046 (*Note RFC 2046::) $B$GDj5A$5$l$F$$$k!#(B @@ -975,7 +918,7 @@ ISO 2022 (*Note ISO 2022::) $B$K4p$$$F!"(BASCII (*Note ASCII::) $B$K(B ISO 8859-5 (*Note ISO 8859-5::) $B$r(B 8bit (*Note 8bit::) $B$GId9f3HD%(B (*Note Code extension::)$B$7$F$$$k!#(B -RFC 1521 (*Note RFC 1521::) $B$GDj5A$5$l$F$$$k!#(B +RFC 2046 (*Note RFC 2046::) $B$GDj5A$5$l$F$$$k!#(B @@ -1225,7 +1168,7 @@ message/rfc822 -------------- $BEAE}E*$J(B RFC 934 (*Note RFC 934::) $B$KBe$o$j!"(BRFC 822 (*Note RFC 822::) -$B$GDj5A$5$l$k(B mail $B$rI=$9(B MIME $B$N7A<0!#(BRFC 1521 (*Note RFC 1521::) $B$GDj5A(B +$B$GDj5A$5$l$k(B mail $B$rI=$9(B MIME $B$N7A<0!#(BRFC 2046 (*Note RFC 2046::) $B$GDj5A(B $B$5$l$F$$$k!#(B @@ -1256,12 +1199,25 @@ Internet Mail Extensions* $B$NN,$G!"(BInternet $B$N(B mail $B$d(B news $B plain text (*Note us-ascii::) $B0J30$NJ8;z$r;H$&$?$a$N(B RFC 822 (*Note RFC 822::) $B$KBP$9$k3HD%!#(B -RFC 1521 (*Note RFC 1521::) $B$H(B RFC 1522 (*Note encoded-word::) $B$GDj5A$5(B -$B$l$F$$$k!#(B +RFC 2045 $B$OKAF,$G<!$N$h$&$K=R$Y$F$$$k!'(B + +STD 11, RFC 822 $B$O!"(BUS-ASCII message header $B$K4X$7$FHs>o$K>\:Y$K5,Dj$7$?(B +message $BI=8=(B protocol $B$rDj5A$7$F$$$k!#$7$+$7!"$=$l$OC1$K(B flat $B$J(B +US-ASCII text $B$N$_$KN1$^$j!"(Bmessage $B$NFbMF$d(B message body $B$K4X$9$k5,Dj$O(B +$B$J$5$l$F$$$J$$!#(BMultipurpose Internet Mail Extensions, $B$"$k$$$O(B MIME $B$H(B +$BAm>N$5$l$k!"$3$N0lO"$NJ8=q$O!"0J2<$N;v$r2DG=$H$9$k$?$a$K(B message $B$N7A<0(B +$B$r:FDj5A$7$?!'(B -(cf. *Note What is MIME?::) + 1. $BJ8=q(B message body $B$K$*$1$k(B US-ASCII $B0J30$NJ8;z=89g(B + 2. $BHsJ8=q(B message body + 3. $BJ#?t$NItJ,$+$i$J$k(B message body + 4. US-ASCII $B0J30$NJ8;z=89g$+$i$J$kJ8=q(B header $B>pJs(B +RFC 2045 (*Note RFC 2045::), RFC 2046 (*Note RFC 2046::), RFC 2047 +(*Note encoded-word::), RFC 2048 (*Note RFC 2048::), RFC 2049 (*Note RFC +2049::) $B$GDj5A$5$l$F$$$k!#(B +  @@ -1274,7 +1230,7 @@ Content-Type field (*Note Content-Type field::) $B$d(B encoded-word (*Note encoded-word::) $B$N(B charset parameter $B$GMQ$$$i$l$kEPO?$5$l$?Id9f2=J8;z=8(B $B9g(B (*Note Coded character set::)$B!#(B -RFC 1521 (*Note RFC 1521::) $B$GDj5A$5$l$F$$$k!#(B +RFC 2045 (*Note RFC 2045::) $B$GDj5A$5$l$F$$$k!#(B iso-2022-jp (*Note iso-2022-jp::) $B$d(B euc-kr (*Note euc-kr::) $B$O$=$N#1$D!#(B $B!J$3$3$G$O!"(BMIME charset $B$OJ8;z=89g(B (*Note Character set::)$B$H6hJL$7$F>.(B @@ -1342,11 +1298,11 @@ File: tm-ja.info, Node: multipart, Next: multipart/alternative, Prev: MULE, Up: Multipart --------- -$B#1$D$N(B message (*Note message::) $B$KJ#?t$N(B part $B$rF~$l$k$?$a$N(B MIME -(*Note MIME::) $B$K$*$1$kI=8=K!!"$b$7$/$O!"J#?t$N(B part $B$+$i$J$k(B message $B$r(B -$B;X$9!#(B(cf. *Note content-type::) +$B#1$D$N(B message (*Note message::) $B$KJ#?t$N(B entity (*Note entity::) $B$rF~$l(B +$B$k$?$a$N(B MIME (*Note MIME::) $B$K$*$1$k(B media type (*Note media type::) $B$N(B +$B#1$D!"$b$7$/$O!"J#?t$N(B entity $B$+$i$J$k(B message $B$r;X$9!#(B -$B8=:_!"Dj5A$5$l$F$$$k(B *multipart* $B$H$7$F$O!"(BRFC 1521 (*Note RFC 1521::) +$B8=:_!"Dj5A$5$l$F$$$k(B *multipart* $B$H$7$F$O!"(BRFC 2046 (*Note RFC 2046::) $B$GDj5A$5$l$?(B * multipart/mixed (*Note multipart/mixed::) @@ -1372,7 +1328,7 @@ multipart/alternative multipart (*Note multipart::) $B$N#1$D$G!"F1$8>pJs$r0[$C$?7A<0$GF~$l!"A*Br(B $B;h$H$9$k>l9g$KMQ$$$k!#(B -(cf. *Note RFC 1521::) +(cf. *Note RFC 2046::) @@ -1383,8 +1339,8 @@ File: tm-ja.info, Node: multipart/digest, Next: multipart/encrypted, Prev: multi multipart/digest ---------------- -multipart (*Note multipart::) $B$N#1$D$G!"4^$^$l$k(B part $B$N(B default $B$N(B -content-type (*Note content-type::) $B$,(B multipart/mixed (*Note +multipart (*Note multipart::) $B$N#1$D$G!"4^$^$l$k(B entity (*Note entity::) +$B$N(B default $B$N(Bmedia type (*Note media type::) $B$,(B multipart/mixed (*Note multipart/mixed::) $B$J$I$N>l9g(B text/plain (*Note text/plain::) $B$G$"$k$N$K(B $BBP$7!"(B*multipart/digest*$B$G$O(B message/rfc822 (*Note message/rfc822::) $B$,(B $BMQ$$$i$l$kE@$,0[$J$k!#(B @@ -1392,7 +1348,7 @@ multipart/mixed::) $B$J$I$N>l9g(B text/plain (*Note text/plain::) $B$G$"$k$N$ $B$3$l$OEAE}E*$J(B RFC 1153 (*Note RFC 1153::) $B$K4p$E$/(B encapsulation (*Note encapsulation::) $B$KBe$o$k$b$N$G$"$k!#(B -(cf. *Note RFC 1521::) +(cf. *Note RFC 2046::) @@ -1420,7 +1376,7 @@ multipart/mixed multipart (*Note multipart::) $B$N<gMW$J(B subtype $B$G!"J#?t$N(B part $B$r=g=xIU(B $B$1$FJB$Y$k>l9g$KMQ$$$k!#(B -(cf. *Note RFC 1521::) +(cf. *Note RFC 2046::) @@ -1434,7 +1390,7 @@ multipart/parallel multipart (*Note multipart::) $B$N#1$D$G!"J#?t$N(B part $B$r=g=xIU$1$:$K4^$a$k(B $B>l9g$KMQ$$$k!#(B -(cf. *Note RFC 1521::) +(cf. *Note RFC 2046::) @@ -1546,8 +1502,8 @@ File: tm-ja.info, Node: Quoted-Printable, Next: RFC 821, Prev: PGP/MIME, Up: Glo Quoted-Printable ---------------- -RFC 1521 (*Note RFC 1521::) $B$GDj5A$5$l$F$$$k(B MIME (*Note MIME::) $B$K$*$1(B -$B$k(B binary data (*Note binary::) $B$N(B network $B$G$NJQ49K!$N#1$D!#(B +RFC 2045 (*Note RFC 2045::) $B$GDj5A$5$l$F$$$k(B MIME (*Note MIME::) $B$K$*$1(B +$B$k(B binary data (*Note binary data::) $B$N(B network $B$G$NJQ49K!$N#1$D!#(B `=' $B$d@)8fJ8;z$d(B 128 $B0J>e$NJ8;z$J$I$O(B `=AF' $B$N$h$&$K(B `=' $B$N8e$KB3$/(B 16 $B?J?t$GI=8=$9$k!#$3$N$?$a!"(BASCII (*Note ASCII::) $BJ8;zCf?4$N(B data $B$G$O(B @@ -1635,7 +1591,7 @@ subset $B$K$J$C$F$$$k!#(BInternet $B$NI8=`$G$O$J$$$,!"(BUSENET $B0J30$N(B  -File: tm-ja.info, Node: RFC 1153, Next: RFC 1521, Prev: RFC 1036, Up: Glossary +File: tm-ja.info, Node: RFC 1153, Next: RFC 1557, Prev: RFC 1036, Up: Glossary RFC 1153 -------- @@ -1658,26 +1614,7 @@ message/rfc822::) $B$rMQ$$$?(B multipart (*Note multipart::) $B$rMQ$$$k$Y$-$G  -File: tm-ja.info, Node: RFC 1521, Next: RFC 1557, Prev: RFC 1153, Up: Glossary - -RFC 1521 --------- - -MIME (*Note MIME::) $B$rDj5A$7$F$$$k(B RFC $B$N#1$D!#(B - - -[RFC 1521] N. Borenstein and N. Freed, "MIME (Multipurpose Internet - Mail Extensions) Part One: Mechanisms for Specifying and Describing - the Format of Internet Message Bodies", September 1993, Standards - Track (obsolete RFC 1341). - - -(RFC 1522 (*Note encoded-word::)) - - - - -File: tm-ja.info, Node: RFC 1557, Next: RFC 1922, Prev: RFC 1521, Up: Glossary +File: tm-ja.info, Node: RFC 1557, Next: RFC 1922, Prev: RFC 1153, Up: Glossary RFC 1557 -------- @@ -1693,7 +1630,7 @@ euc-kr (*Note euc-kr::) $B$H(B iso-2022-kr (*Note iso-2022-kr::) $B$H$$$&4Z9q  -File: tm-ja.info, Node: RFC 1922, Next: plain text, Prev: RFC 1557, Up: Glossary +File: tm-ja.info, Node: RFC 1922, Next: RFC 2045, Prev: RFC 1557, Up: Glossary RFC 1922 -------- @@ -1716,7 +1653,64 @@ field (*Note Content-Type field::) $B$N(B parameter $B$rDj5A$7$F$$$k!#(B  -File: tm-ja.info, Node: plain text, Next: Security multipart, Prev: RFC 1922, Up: Glossary +File: tm-ja.info, Node: RFC 2045, Next: RFC 2046, Prev: RFC 1922, Up: Glossary + +RFC 2045 +-------- + + +[RFC 2045] N. Freed and N. Borenstein, "Multipurpose Internet Mail + Extensions (MIME) Part One: Format of Internet Message Bodies", + November 1996, Standards Track (obsolete RFC 1521, 1522, 1590). + + + + + +File: tm-ja.info, Node: RFC 2046, Next: RFC 2048, Prev: RFC 2045, Up: Glossary + +RFC 2046 +-------- + + +[RFC 2046] N. Freed and N. Borenstein, "Multipurpose Internet Mail + Extensions (MIME) Part Two: Media Types", November 1996, Standards + Track (obsolete RFC 1521, 1522, 1590). + + + + + +File: tm-ja.info, Node: RFC 2048, Next: RFC 2049, Prev: RFC 2046, Up: Glossary + +RFC 2048 +-------- + + +[RFC 2048] N. Freed, J. Klensin and J. Postel, "Multipurpose + Internet Mail Extensions (MIME) Part Four: Registration + Procedures", November 1996, Standards Track (obsolete RFC 1521, + 1522, 1590). + + + + + +File: tm-ja.info, Node: RFC 2049, Next: plain text, Prev: RFC 2048, Up: Glossary + +RFC 2049 +-------- + + +[RFC 2049] N. Freed and N. Borenstein, "Multipurpose Internet Mail + Extensions (MIME) Part Five: Conformance Criteria and Examples", + November 1996, Standards Track (obsolete RFC 1521, 1522, 1590). + + + + + +File: tm-ja.info, Node: plain text, Next: Security multipart, Prev: RFC 2049, Up: Glossary plain text ---------- @@ -1755,10 +1749,8 @@ File: tm-ja.info, Node: text/enriched, Next: text/plain, Prev: Security multipar text/enriched ------------- -RFC 1521 (*Note RFC 1521::) $B$GDj5A$5$l$?(B -*text/richtext* $B$KBe$o$C$F!"=qBN$dAHHG$K4X(B -$B$9$k>pJs$r;}$C$?(B text$B$rI=8=$9$k$?$a$N(B content-type (*Note -content-type::). +RFC 1521 $B$GDj5A$5$l$?(B *text/richtext* $B$KBe$o$C$F!"=qBN$dAHHG$K4X$9$k>pJs(B +$B$r;}$C$?(B text$B$rI=8=$9$k$?$a$N(B media type (*Note media type::). [text/enriched: RFC 1896] P. Resnick and A. Walker, "The @@ -1774,8 +1766,8 @@ File: tm-ja.info, Node: text/plain, Next: tm-kernel, Prev: text/enriched, Up: Gl text/plain ---------- -RFC 1521 (*Note RFC 1521::) $B$GDj5A$5$l$?!"(Bplain text (*Note plain -text::) $B$rI=8=$9$k$?$a$N(B content-type (*Note content-type::). +RFC 2046 (*Note RFC 2046::) $B$GDj5A$5$l$?!"(Bplain text (*Note plain +text::) $B$rI=8=$9$k$?$a$N(B media type (*Note media type::). $BHs(B MIME message $B$J$I$N(B content-type $B$,Dj5A$5$l$J$$(B part $B$O(B MIME charset (*Note MIME charset::) $B$,(B us-ascii (*Note us-ascii::) $B$G$"$k(B @@ -2096,11 +2088,11 @@ File: tm-ja.info, Node: Concept Index, Next: Variable Index, Prev: Bug report, U * Menu: * ANSI X3.4:1986: ASCII. 9. -* application: content-type. 10. +* application: media type. 20. * application/pgp: PGP-kazu. 9. * ASCII: ASCII. 9. * ASCII: us-ascii. 16. -* audio: content-type. 10. +* audio: media type. 16. * BBDB: setting for VM. 15. * BIG5: cn-big5. 13. * binary: 8bit. 35. @@ -2110,8 +2102,7 @@ File: tm-ja.info, Node: Concept Index, Next: Variable Index, Prev: Bug report, U * charset-extension: RFC 1922. 11. * CNS 11643:1992: CNS. 13. * CNS 11643-1992: CNS. 13. -* Content-Type: How is MIME?. 16. -* content-type/subtype: content-type. 21. +* content-type/subtype: media type. 26. * Emacs/mule: MULE. 20. * encapsulation: RFC 1153. 6. * encapsulation: RFC 934. 6. @@ -2124,7 +2115,7 @@ File: tm-ja.info, Node: Concept Index, Next: Variable Index, Prev: Bug report, U * GB 8565.2: GB 8565.2. 8. * GB 8565.2:1988: GB 8565.2. 8. * gnus-mime: tm-MUA. 16. -* image: content-type. 11. +* image: media type. 14. * Informational: hz-gb2312. 14. * Informational: hz-gb2312. 19. * Informational: iso-2022-jp-2. 10. @@ -2175,21 +2166,18 @@ File: tm-ja.info, Node: Concept Index, Next: Variable Index, Prev: Bug report, U * KS C 5601:1987: KS C5601. 8. * KS C 5861:1992: euc-kr. 14. * KS C5601: KS C5601. 8. -* message: content-type. 11. +* message: media type. 24. * message header: RFC 822. 6. * Message Transfer Agent: MTA. 5. * Message User Agent: MUA. 5. -* MIME: What is MIME?. 5. * mime-setup: mime-setup. 6. * mule: MULE. 19. * MULE: MULE. 20. -* multipart: content-type. 12. -* Multipart: How is MIME?. 23. +* multipart: media type. 22. * multipart: multipart. 10. * multipart/digest: multipart/digest. 9. * multipart/encrypted: Security multipart. 8. * multipart/signed: Security multipart. 6. -* Multipurpose Internet Mail * Multipurpose Internet Mail Extensions: MIME. 5. * pad: Base64. 10. * parameter: Content-Type field. 21. @@ -2201,19 +2189,22 @@ File: tm-ja.info, Node: Concept Index, Next: Variable Index, Prev: Bug report, U * RFC 1153: RFC 1153. 16. * RFC 1468: iso-2022-jp. 18. * RFC 1489: koi8-r. 13. -* RFC 1521: RFC 1521. 7. -* RFC 1522: encoded-word. 8. * RFC 1554: iso-2022-jp-2. 10. * RFC 1557: RFC 1557. 8. * RFC 1806: Content-Disposition. 8. * RFC 1842: hz-gb2312. 14. * RFC 1843: hz-gb2312. 19. * RFC 1847: Security multipart. 12. -* RFC 1896: text/enriched. 10. +* RFC 1896: text/enriched. 8. * RFC 1922: RFC 1922. 14. * RFC 1947: iso-8859-7. 13. * RFC 1991: PGP. 16. * RFC 2015: PGP/MIME. 20. +* RFC 2045: RFC 2045. 5. +* RFC 2046: RFC 2046. 5. +* RFC 2047: encoded-word. 8. +* RFC 2048: RFC 2048. 5. +* RFC 2049: RFC 2049. 5. * RFC 821: RFC 821. 8. * RFC 822: RFC 822. 14. * RFC 934: RFC 934. 13. @@ -2224,15 +2215,18 @@ File: tm-ja.info, Node: Concept Index, Next: Variable Index, Prev: Bug report, U * SMTP: RFC 821. 8. * Standards Track: encoded-word. 8. * Standards Track: PGP/MIME. 20. -* Standards Track: RFC 1521. 7. +* Standards Track: RFC 2045. 5. +* Standards Track: RFC 2046. 5. +* Standards Track: RFC 2048. 5. +* Standards Track: RFC 2049. 5. * Standards Track: Security multipart. 12. * STD 10: RFC 821. 8. * STD 11: RFC 822. 14. * STD 9: FTP. 8. -* subtype: content-type. 7. * subtype: Content-Type field. 20. -* text: content-type. 13. -* text/enriched: text/enriched. 10. +* subtype: media type. 7. +* text: media type. 12. +* text/enriched: text/enriched. 8. * text/plain: text/plain. 10. * text/richtext: text/enriched. 6. * tm $BBg@9$j(B package: tm-MUA. 8. @@ -2241,16 +2235,15 @@ File: tm-ja.info, Node: Concept Index, Next: Variable Index, Prev: Bug report, U * tm-rmail: tm-MUA. 20. * tm-setup: tm-setup. 6. * tm-vm: tm-MUA. 18. -* type: content-type. 6. * type: Content-Type field. 20. +* type: media type. 6. * us-ascii: us-ascii. 13. * USENET: RFC 1036. 9. -* video: content-type. 13. +* video: media type. 18. * vm: setting for VM. 6. * XEmacs/mule: MULE. 21. -* x-token: content-type. 29. -1522: encoded-word. 6. -Extensions: What is MIME?. 6. +* x-token: media type. 34. +2047: encoded-word. 6. mail: RFC 822. 11. message: RFC 822. 11. method: method. 8. @@ -2273,104 +2266,105 @@ File: tm-ja.info, Node: Variable Index, Prev: Concept Index, Up: Top Tag table: Node: Top152 Node: Introduction680 -Node: What is MIME?1569 -Node: How is MIME?2248 -Node: Glossary4723 -Node: 7bit8111 -Node: 8bit9428 -Node: 94 character set11483 -Node: 96 character set11756 -Node: 94x94 character set12023 -Node: ASCII12327 -Node: Base6412757 -Node: binary13455 -Node: Character Set14045 -Node: cn-gb14375 -Node: cn-big514861 -Node: CNS15497 -Node: Coded character set16178 -Node: Code extension16505 -Node: Content-Disposition16849 -Node: content-type17291 -Node: Content-Type field18698 -Node: Emacs19791 -Node: encoded-word20025 -Node: encapsulation20416 -Node: euc-kr20711 -Node: FTP21228 -Node: GB 231221513 -Node: GB 8565.222067 -Node: hz-gb231222530 -Node: ISO 202223339 -Node: iso-2022-cn23918 -Node: iso-2022-cn-ext24394 -Node: iso-2022-jp25066 -Node: iso-2022-jp-225781 -Node: iso-2022-kr26190 -Node: ISO 64626623 -Node: ISO 8859-127283 -Node: iso-8859-127714 -Node: ISO 8859-228159 -Node: iso-8859-228593 -Node: ISO 8859-329032 -Node: ISO 8859-429349 -Node: ISO 8859-529666 -Node: iso-8859-530075 -Node: ISO 8859-630517 -Node: ISO 8859-730836 -Node: iso-8859-731240 -Node: ISO 8859-831790 -Node: ISO 8859-932109 -Node: ISO-IR-16532426 -Node: JIS X020132941 -Node: JIS C622633735 -Node: JIS X020834028 -Node: JIS X021235911 -Node: koi8-r36263 -Node: KS C560136761 -Node: message37162 -Node: message/rfc82237425 -Node: method37733 -Node: MIME38084 -Node: MIME charset38506 -Node: MTA39068 -Node: MUA39282 -Node: MULE39456 -Node: multipart40310 -Node: multipart/alternative41146 -Node: multipart/digest41451 -Node: multipart/encrypted42098 -Node: multipart/mixed42428 -Node: multipart/parallel42721 -Node: multipart/signed43008 -Node: PGP43304 -Node: PGP-kazu44140 -Node: PGP/MIME45627 -Node: Quoted-Printable46660 -Node: RFC 82147421 -Node: RFC 82247701 -Node: RFC 93448185 -Node: RFC 103648640 -Node: RFC 115349094 -Node: RFC 152149635 -Node: RFC 155750080 -Node: RFC 192250471 -Node: plain text51137 -Node: Security multipart51413 -Node: text/enriched52046 -Node: text/plain52512 -Node: tm-kernel53000 -Node: tm-MUA53505 -Node: us-ascii54024 -Node: Setting54690 -Node: mime-setup55370 -Node: signature55992 -Node: Notice about GNUS57750 -Node: tm-setup58902 -Node: setting for VM59743 -Node: manual setting60109 -Node: Bug report60664 -Node: Concept Index62274 -Node: Variable Index71651 +Node: Glossary1421 +Node: 7bit4899 +Node: 8bit6216 +Node: 94 character set8271 +Node: 96 character set8544 +Node: 94x94 character set8811 +Node: ASCII9115 +Node: Base649545 +Node: binary10243 +Node: Character Set10833 +Node: cn-gb11163 +Node: cn-big511649 +Node: CNS12285 +Node: Coded character set12966 +Node: Code extension13293 +Node: Content-Disposition13637 +Node: media type14077 +Node: Content-Type field15509 +Node: Emacs16594 +Node: encoded-word16828 +Node: encapsulation17250 +Node: euc-kr17545 +Node: FTP18062 +Node: GB 231218347 +Node: GB 8565.218901 +Node: hz-gb231219364 +Node: ISO 202220173 +Node: iso-2022-cn20752 +Node: iso-2022-cn-ext21228 +Node: iso-2022-jp21900 +Node: iso-2022-jp-222615 +Node: iso-2022-kr23024 +Node: ISO 64623457 +Node: ISO 8859-124117 +Node: iso-8859-124548 +Node: ISO 8859-224993 +Node: iso-8859-225427 +Node: ISO 8859-325866 +Node: ISO 8859-426183 +Node: ISO 8859-526500 +Node: iso-8859-526909 +Node: ISO 8859-627351 +Node: ISO 8859-727670 +Node: iso-8859-728074 +Node: ISO 8859-828624 +Node: ISO 8859-928943 +Node: ISO-IR-16529260 +Node: JIS X020129775 +Node: JIS C622630569 +Node: JIS X020830862 +Node: JIS X021232745 +Node: koi8-r33097 +Node: KS C560133595 +Node: message33996 +Node: message/rfc82234259 +Node: method34567 +Node: MIME34918 +Node: MIME charset36140 +Node: MTA36702 +Node: MUA36916 +Node: MULE37090 +Node: multipart37944 +Node: multipart/alternative38809 +Node: multipart/digest39114 +Node: multipart/encrypted39776 +Node: multipart/mixed40106 +Node: multipart/parallel40399 +Node: multipart/signed40686 +Node: PGP40982 +Node: PGP-kazu41818 +Node: PGP/MIME43305 +Node: Quoted-Printable44338 +Node: RFC 82145104 +Node: RFC 82245384 +Node: RFC 93445868 +Node: RFC 103646323 +Node: RFC 115346777 +Node: RFC 155747318 +Node: RFC 192247709 +Node: RFC 204548373 +Node: RFC 204648684 +Node: RFC 204848973 +Node: RFC 204949288 +Node: plain text49602 +Node: Security multipart49878 +Node: text/enriched50511 +Node: text/plain50953 +Node: tm-kernel51437 +Node: tm-MUA51942 +Node: us-ascii52461 +Node: Setting53127 +Node: mime-setup53807 +Node: signature54429 +Node: Notice about GNUS56187 +Node: tm-setup57339 +Node: setting for VM58180 +Node: manual setting58546 +Node: Bug report59101 +Node: Concept Index60711 +Node: Variable Index70173  End tag table diff --git a/doc/tm-ja.sgml b/doc/tm-ja.sgml index eb5bbcb..99c5033 100644 --- a/doc/tm-ja.sgml +++ b/doc/tm-ja.sgml @@ -1,5 +1,5 @@ <!doctype sinfo system> -<!-- $Id: tm-ja.sgml,v 6.1 1996/10/21 02:32:00 morioka Exp $ --> +<!-- $Id: tm-ja.sgml,v 7.0 1996/12/02 19:15:36 morioka Exp $ --> <head> <title>tm 7.90 Manual$B!JF|K\8lHG!K(B <author>$B<i2,(B $BCNI'(B <mail>morioka@jaist.ac.jp</mail> @@ -43,65 +43,6 @@ tm $B$O(B GNU Emacs $B$G(B MIME $B$r3Z$7$`$?$a$N(B package $B$G$9!#(Btm </ul> -<h2> $B$H$3$m$G!"(BMIME $B$C$F$$$C$?$$2?!)(B -<node> What is MIME? -<p> -<concept>MIME</concept> $B$H$O(B <concept>Multipurpose Internet Mail -Extensions</concept> $B$NN,$G!"=>Mh$N!"4pK\E*$K(B <dref>us-ascii</dref> $B$N(B -<dref>plain text</dref> $B$G$"$C$?(B Internet Mail/News $B$KBP$9$k3HD%$K$J$C(B -$B$F$$$^$9!#(B -<p> -MIME $B$K$O!"(B<a node="RFC 1521">RFC 1521</a> $B$G5,Dj$5$l$F$$$kB?L\E*(B -message $B$NB&LL$H!"(B<a node="encoded-word">RFC 1522</a> $B$G5,Dj$5$l$F$$$k(B -message header $B$K$*$1$kHs(B ASCII $BJ8;z$NI=8=K!$N$h$&$J!"B?8@8l2=$NB&LL$,(B -$B$"$j$^$9!#(B - - -<h2> MIME $B$G$I$s$J$3$H=PMh$k$N!)(B -<node> How is MIME? -<P> -$B$^$:!"B?L\E*(B message $B$NB&LL$r9M$($k$H!"=>Mh$N(B Internet Mail/News $B$,4p(B -$BK\E*$K(B <dref>us-ascii</dref> $B$N(B <dref>plain text</dref> $B$7$+I=8=$G$-$J(B -$B$+$C$?$N$KBP$7$F!"3($d2;@<$dF02h$J$I$NMM!9$J(B data $B$rI=8=$9$k$3$H$,$G$-(B -$B$^$9!#(B -<P> -$B$^$?!"LLGr$$$3$H$K!"(B<a node="FTP">ftp</a> $B$d(B ftp mail $B$r$7$?$j!"(Bfile -$B$r<h$j=P$7$?$j!"(Bpatch $B$rEv$F$?$j!"$H$$$C$?!"!X<jB3$-!Y$rAw$k$3$H$,$G$-(B -$B$^$9!#(B -<P> -$B!t(B $B$b$C$H$b!"$3$&$$$&$N$O!"$"$k0UL#$G$O4m81$@$C$?$j$9$k$N$G$9$,!#(B -<P> -$B$3$&$7$?(B message $B$O!"FbMF$N<oN`$r(B <a node="Content-Type -field"><concept>Content-Type</concept></a> $B$H$$$&(B field $B$K=q$$$?(B -message $B$N7?$G;XDj$7$^$9!#$9$k$H!"<u$1<j$O3F(B <dref>content-type</dref> -$B$KBP1~$7$?=hM}$N<oN`$r@_Dj$7$F$*$$$F!"(Bmessage $B$r!XFI$`!Y$@$1$G!"3($dF0(B -$B2h$r8+$?$j!"2;$rLD$i$7$?$j!"(Bftp $B$G(B file $B$r<h$C$?$j!"(Bfile$B$r<h$j=P$7$?$j(B -$B$G$-$^$9!#(B -<p> -$B$^$?!"$"$k(B message $B$KJ#?t$N(B content-type $B$,B8:_$9$k(B <a -node="multipart"><concept>Multipart</concept></a> $B$N(B message $B$H$$$&$N(B -$B$b2DG=$G!"0l$D$N(B message $B$NCf$K!"3($H2;$HJ8>O$rF~$l$?$j$H$$$C$?$h$&$J(B -$B$3$H$,$G$-$^$9!#(B -<p> -MIME $B$K$O$3$N$h$&$J!X@k8@!Y$N;WA[$,$"$k$h$&$K;W$o$l$^$9!#$D$^$j!"(B -<dref>us-ascii</dref> $B$r!V%"%k%U%!%Y%C%H!W$H$9$k(B MIME $B$H$$$&(B message -$B5-=R8@8l$G!"$$$m$$$m$J$b$N$r5-=R$7$F$$$3$&$H$$$&$3$H$G$9!#$3$l$O(B <a -node="encoded-word">RFC 1522</a> $B$G5,Dj$5$l$?(B encoded-word $B$G$b$$$($k(B -$B$H;W$$$^$9!#(B -<P> -$B$=$7$F!"<u$1<j$O!"M}2r$G$-$J$$$b$N$OL5;k$9$k$,!"$=$N7k2L!"(Bdata $B$r2u$9(B -$B$3$H$O$7$J$$$H$$$&$b$N$,$"$j$^$9!#(B -<p> -$BNc$($P!"(B<a node="ASCII">ASCII</a> $B$7$+I=<($G$-$J$$4D6-$G(B <a node="JIS -X0208">JIS X0208</a> $B$H(B <a node="ISO 8859-1">ISO 8859-1</a> $B$,:.$8$C$?(B -$B%F%-%9%H$r$b$i$C$?$i:$$kLu$G$9$,!"$=$&$$$&;~$@$1B?8@8lC<Kv$r3+$/$H$$$&(B -$B$h$&$J5;$,;H$($^$9!#(B -<p> -$B$b$A$m$s!"(B<a node="MULE">MULE</a> $B$N$h$&$JB?8@8l4D6-$K$*$$$F$b(B <a -node="MUA">MUA</a> $B$KBP$7$FL@<(E*$K(B <a node="MIME charset">MIME -charset</a> $B$r<($9$3$H$OM-1W$G$7$g$&!#(B - - <h2> $BMQ8l(B <node> Glossary <p> @@ -211,9 +152,8 @@ node="ISO 646">ISO 646</a> $B$N0l$D!#(B <h3> Base64 <node> Base64 <p> -<a node="RFC 1521">RFC 1521</a> $B$GDj5A$5$l$F$$$k(B <a -node="MIME">MIME</a> $B$K$*$1$k(B <a node="binary">binary data</a> $B$N(B -network $B$G$NJQ49K!$N#1$D!#(B +<dref>RFC 2045</dref> $B$GDj5A$5$l$F$$$k(B <dref>MIME</dref> $B$K$*$1$k(B <a +node="binary">binary data</a> $B$N(B network $B$G$NJQ49K!$N#1$D!#(B <p> $B!X(B64 $B?J?t!Y$H$$$&0UL#$G!"(B3 byte $B$N(B data $B$r(B 0 $B$+$i(B 63 $B$N?t$rI=$9(B <dref>ASCII</dref> 4 $BJ8;z$KJQ49$9$kJ}K!!#!J$b$7!"(B4 $BJ8;z$K$J$i$J$1$l$P(B @@ -319,21 +259,35 @@ node="MIME">MIME</a> $B$N3HD%$N#1$D!#(B date="June 1995"> -<h3> content-type -<node> content-type +<h3> media type +<node> media type <p> -<dref>MIME</dref> $B$K$*$1$k(B <dref>part</dref> $B$N<oN`!#(B<concept>type</> -$B$H(B <concept>subtype</concept> $B$+$i$J$k!#(B<dref>RFC 1521</dref> $B$GDj5A$5(B -$B$l$F$$$k!#(B +<dref>MIME</dref> $B$K$*$1$k(B <dref>entity</dref> $B$N<oN`!#(B +<concept>type</> $B$H(B <concept>subtype</concept> $B$+$i$J$k!#(B<dref>RFC +2046</dref> $B$GDj5A$5$l$F$$$k!#(B <p> -type $B$OI8=`$G$O(B <concept>application</concept>, -<concept>audio</concept>, <concept>image</concept>, -<concept>message</concept>, <a -node="multipart"><concept>multipart</concept></a>, -<concept>text</concept>, <concept>video</concept> $B$,Dj5A$5$l!"$=$l$>$l(B -$B$K$O(B application/octet-stream, audio/basic, image/jpeg, -<dref>multipart/mixed</dref>, <dref>text/plain</dref>, video/mpeg $B$J$I(B -$B$N$5$^$6$^$J(B subtype $B$,Dj5A$5$l$F$$$k!#(B +type $B$OI8=`$G$O(B + +<ul> +<li><concept>text</concept> +</li> +<li><concept>image</concept> +</li> +<li><concept>audio</concept> +</li> +<li><concept>video</concept> +</li> +<li><concept>application</concept> +</li> +<li><a node="multipart"><concept>multipart</concept></a> +</li> +<li><concept>message</concept> +</ul> + +<noindent> +$B$,Dj5A$5$l!"$=$l$>$l$K$O(B application/octet-stream, audio/basic, +image/jpeg, <dref>multipart/mixed</dref>, <dref>text/plain</dref>, +video/mpeg $B$J$I$N$5$^$6$^$J(B subtype $B$,Dj5A$5$l$F$$$k!#(B <memo title="$BCm0U(B"> <p> @@ -342,8 +296,8 @@ node="multipart"><concept>multipart</concept></a>, </memo> <p> -content-type $B$O!"(BRFC 1521 $B$GDj5A$5$l$F$$$k$b$N$K2C$($F!"EPO?$9$k$3$H$b(B -$B$G$-$k!#8=:_!"EPO?$5$l$F$$$k$b$N$O(B <a +media type $B$O!"(BRFC 2046 $B$GDj5A$5$l$F$$$k$b$N$K2C$($F!"EPO?$9$k$3$H$b$G(B +$B$-$k!#8=:_!"EPO?$5$l$F$$$k$b$N$O(B <a href="ftp://ftp.isi.edu/in-notes/iana/assignments/media-types">MEDIA TYPES</a> $B$G;2>H$G$-$k!#(B <p> @@ -359,16 +313,15 @@ content-type $B$ONJ2r$rF@$?<T$N4V$G$7$+2r<a$G$-$J$$$N$GMxMQ$K$OCm0U$9$k(B <h3> Content-Type field <node> Content-Type field <p> -<dref>content-type</dref> $B$d(B <dref>MIME charset</dref> $B$J$I$N(B part $B$K(B -$B4X$9$k>pJs$rI=8=$9$k$?$a$N(B field. <dref>RFC 1521</dref> $B$GDj5A$5$l$F$$(B -$B$k!#(B +<dref>media type</dref> $B$d(B <dref>MIME charset</dref> $B$J$I$N(B part $B$K4X(B +$B$9$k>pJs$rI=8=$9$k$?$a$N(B field. <dref>RFC 2045</dref> $B$GDj5A$5$l$F$$$k!#(B <memo> <p> $BNr;KE*$K$O(B RFC 1049 $B$G(B Content-Type field $B$,Ds0F$5$l$F$$$k!#C"$7!"$3$3(B -$B$G$O(B type $B$H(B subtype $B$N6hJL$O$J$$!#$7$+$7!"J8K!E*$K$O(B RFC 1521 parser -$B$O(B RFC 1049 $B$K4p$E$/(B message $B$rL$CN$N(B content-type $B$r;}$C$?(B message $B$H(B -$B$7$F(B parse $B$G$-$k$@$m$&!#(B +$B$G$O(B type $B$H(B subtype $B$N6hJL$O$J$$!#$7$+$7!"J8K!E*$K$O(B MIME parser $B$O(B +RFC 1049 $B$K4p$E$/(B message $B$rL$CN$N(B content-type $B$r;}$C$?(B message $B$H$7(B +$B$F(B parse $B$G$-$k$@$m$&!#(B </memo> <p> @@ -428,12 +381,12 @@ GNU Emacs $B$NJQ<o$NAm>N$H$9$k!#(B <node> encoded-word <p> header $B$K$*$1$kHs(B <a node="ASCII">ASCII</a> $BJ8;z$NI=8=!#(B<concept>RFC -1522</concept> $B$GDj5A$5$l$F$$$k!#(B +2047</concept> $B$GDj5A$5$l$F$$$k!#(B <p> -<rfc number="1522" type="Standards Track" author="K. Moore" +<rfc number="2047" type="Standards Track" author="K. Moore" title="MIME (Multipurpose Internet Mail Extensions) Part - Two: Message Header Extensions for Non-ASCII Text" - date="September 1993"> + Three: Message Header Extensions for Non-ASCII Text" + date="November 1996" obsolete="1521,1522,1590"> <h3> encapsulation @@ -648,14 +601,13 @@ character set">96 $BJ8;z=89g(B</a>$B!#(B <h3> iso-8859-1 <node> iso-8859-1 <p> -$B@>2$=t8l$J$I$rI=8=$9$k$?$a$N(B <a node="MIME charset">MIME charset</a> -$B$N#1$D!#(B +$B@>2$=t8l$J$I$rI=8=$9$k$?$a$N(B <dref>MIME charset</dref> $B$N#1$D!#(B <p> <a node="ISO 2022">ISO 2022</a> $B$K4p$$$F!"(B<a node="ASCII">ASCII</a> $B$K(B <a node="ISO 8859-1">ISO 8859-1</a> $B$r(B <a node="8bit">8bit</a> $B$G(B<a node="Code extension">$BId9f3HD%(B</a>$B$7$F$$$k!#(B <p> -<a node="RFC 1521">RFC 1521</a> $B$GDj5A$5$l$F$$$k!#(B +<dref>RFC 2046</dref> $B$GDj5A$5$l$F$$$k!#(B <h3> ISO 8859-2 @@ -681,7 +633,7 @@ character set">96 $BJ8;z=89g(B</a>$B!#(B <a node="ISO 8859-2">ISO 8859-2</a> $B$r(B <a node="8bit">8bit</a> $B$G(B<a node="Code extension">$BId9f3HD%(B</a>$B$7$F$$$k!#(B <p> -<a node="RFC 1521">RFC 1521</a> $B$GDj5A$5$l$F$$$k!#(B +<dref>RFC 2046</dref> $B$GDj5A$5$l$F$$$k!#(B <h3> ISO 8859-3 @@ -726,7 +678,7 @@ node="Code extension">$BId9f3HD%(B</a>$B$7$F$$$k!#(B <a node="ISO 8859-5">ISO 8859-5</a> $B$r(B <a node="8bit">8bit</a> $B$G(B<a node="Code extension">$BId9f3HD%(B</a>$B$7$F$$$k!#(B <p> -<a node="RFC 1521">RFC 1521</a> $B$GDj5A$5$l$F$$$k!#(B +<dref>RFC 2046</dref> $B$GDj5A$5$l$F$$$k!#(B <h3> ISO 8859-6 @@ -915,7 +867,7 @@ RFC 1489 $B$GDj5A$5$l$F$$$k!#(B <node> message/rfc822 <p> $BEAE}E*$J(B <dref>RFC 934</dref> $B$KBe$o$j!"(B<dref>RFC 822</dref> $B$GDj5A$5(B -$B$l$k(B mail $B$rI=$9(B MIME $B$N7A<0!#(B<dref>RFC 1521</dref> $B$GDj5A$5$l$F$$$k!#(B +$B$l$k(B mail $B$rI=$9(B MIME $B$N7A<0!#(B<dref>RFC 2046</dref> $B$GDj5A$5$l$F$$$k!#(B <h3> method @@ -935,10 +887,29 @@ program. Emacs Lisp $B$G=q$+$l$?(B <concept>internal method</concept> $B$H(B Internet $B$N(B mail $B$d(B news $B$G(B <a node="us-ascii">us-ascii plain text</a> $B0J30$NJ8;z$r;H$&$?$a$N(B <dref>RFC 822</dref> $B$KBP$9$k3HD%!#(B <p> -<a node="RFC 1521">RFC 1521</a> $B$H(B <a node="encoded-word">RFC 1522</a> -$B$GDj5A$5$l$F$$$k!#(B +RFC 2045 $B$OKAF,$G<!$N$h$&$K=R$Y$F$$$k!'(B +<p> +STD 11, RFC 822 $B$O!"(BUS-ASCII message header $B$K4X$7$FHs>o$K>\:Y$K5,Dj$7(B +$B$?(B message $BI=8=(B protocol $B$rDj5A$7$F$$$k!#$7$+$7!"$=$l$OC1$K(B flat $B$J(B +US-ASCII text $B$N$_$KN1$^$j!"(Bmessage $B$NFbMF$d(B message body $B$K4X$9$k5,Dj(B +$B$O$J$5$l$F$$$J$$!#(BMultipurpose Internet Mail Extensions, $B$"$k$$$O(B MIME +$B$HAm>N$5$l$k!"$3$N0lO"$NJ8=q$O!"0J2<$N;v$r2DG=$H$9$k$?$a$K(B message $B$N(B +$B7A<0$r:FDj5A$7$?!'(B + +<ol> +<li>$BJ8=q(B message body $B$K$*$1$k(B US-ASCII $B0J30$NJ8;z=89g(B +</li> +<li>$BHsJ8=q(B message body +</li> +<li>$BJ#?t$NItJ,$+$i$J$k(B message body +</li> +<li>US-ASCII $B0J30$NJ8;z=89g$+$i$J$kJ8=q(B header $B>pJs(B +</ol> + <p> -<cf node="What is MIME?"> +<dref>RFC 2045</dref>, <dref>RFC 2046</dref>, <a +node="encoded-word">RFC 2047</a>, <dref>RFC 2048</dref>, <dref>RFC +2049</dref> $B$GDj5A$5$l$F$$$k!#(B <h3> MIME charset @@ -948,7 +919,7 @@ Internet $B$N(B mail $B$d(B news $B$G(B <a node="us-ascii">us-ascii plain node="encoded-word">encoded-word</a> $B$N(B charset parameter $B$GMQ$$$i$l$k(B $BEPO?$5$l$?(B<a node="Coded character set">$BId9f2=J8;z=89g(B</a>$B!#(B <p> -<a node="RFC 1521">RFC 1521</a> $B$GDj5A$5$l$F$$$k!#(B +<dref>RFC 2045</dref> $B$GDj5A$5$l$F$$$k!#(B <p> <a node="iso-2022-jp">iso-2022-jp</a> $B$d(B <a node="euc-kr">euc-kr</a> $B$O$=$N#1$D!#!J$3$3$G$O!"(BMIME charset $B$O(B<a node="Character set">$BJ8;z=8(B @@ -999,12 +970,12 @@ href="ftp://etlport.etl.go.jp/pub/mule/mule-19.33-gamma.taz"> alpha $BHG(B <h3> Multipart <node> multipart <p> -$B#1$D$N(B <dref>message</dref> $B$KJ#?t$N(B part $B$rF~$l$k$?$a$N(B -<dref>MIME</dref> $B$K$*$1$kI=8=K!!"$b$7$/$O!"J#?t$N(B part $B$+$i$J$k(B -message $B$r;X$9!#(B<cf node="content-type"> +$B#1$D$N(B <dref>message</dref> $B$KJ#?t$N(B <dref>entity</dref> $B$rF~$l$k$?$a(B +$B$N(B <dref>MIME</dref> $B$K$*$1$k(B <dref>media type</dref> $B$N#1$D!"$b$7$/$O!"(B +$BJ#?t$N(B entity $B$+$i$J$k(B message $B$r;X$9!#(B <p> $B8=:_!"Dj5A$5$l$F$$$k(B <concept>multipart</concept> $B$H$7$F$O!"(B<dref>RFC -1521</dref> $B$GDj5A$5$l$?(B +2046</dref> $B$GDj5A$5$l$?(B <ul> <li><dref>multipart/mixed</dref> @@ -1031,22 +1002,22 @@ message $B$r;X$9!#(B<cf node="content-type"> <dref>multipart</dref> $B$N#1$D$G!"F1$8>pJs$r0[$C$?7A<0$GF~$l!"A*Br;h$H(B $B$9$k>l9g$KMQ$$$k!#(B <p> -<cf node="RFC 1521"> +<cf node="RFC 2046"> <h3> multipart/digest <node> multipart/digest <p> -<dref>multipart</dref> $B$N#1$D$G!"4^$^$l$k(B part $B$N(B default $B$N(B -<dref>content-type</dref> $B$,(B <dref>multipart/mixed</dref> $B$J$I$N>l9g(B -<dref>text/plain</dref> $B$G$"$k$N$KBP$7!"(B +<dref>multipart</dref> $B$N#1$D$G!"4^$^$l$k(B <dref>entity</dref> $B$N(B +default $B$N(B<dref>media type</dref> $B$,(B <dref>multipart/mixed</dref> $B$J$I(B +$B$N>l9g(B <dref>text/plain</dref> $B$G$"$k$N$KBP$7!"(B <concept>multipart/digest</concept>$B$G$O(B <dref>message/rfc822</dref> $B$,(B $BMQ$$$i$l$kE@$,0[$J$k!#(B <p> $B$3$l$OEAE}E*$J(B <dref>RFC 1153</dref> $B$K4p$E$/(B <dref>encapsulation</dref> $B$KBe$o$k$b$N$G$"$k!#(B <p> -<cf node="RFC 1521"> +<cf node="RFC 2046"> <h3> multipart/encrypted @@ -1064,7 +1035,7 @@ RFC 1847 $B$GDj5A$5$l$?(B <dref>Security multipart</dref> $B$N#1$D$G!"0E9f2= <dref>multipart</dref> $B$N<gMW$J(B subtype $B$G!"J#?t$N(B part $B$r=g=xIU$1$FJB(B $B$Y$k>l9g$KMQ$$$k!#(B <p> -<cf node="RFC 1521"> +<cf node="RFC 2046"> <h3> multipart/parallel @@ -1073,7 +1044,7 @@ RFC 1847 $B$GDj5A$5$l$?(B <dref>Security multipart</dref> $B$N#1$D$G!"0E9f2= <dref>multipart</dref> $B$N#1$D$G!"J#?t$N(B part $B$r=g=xIU$1$:$K4^$a$k>l9g(B $B$KMQ$$$k!#(B <p> -<cf node="RFC 1521"> +<cf node="RFC 2046"> <h3> multipart/signed @@ -1160,13 +1131,12 @@ Internet $B$G$O:#8e(B <dref>PGP/MIME</dref> $B$NJ}8~$GI8=`2=$7$F$$$3$&$H$$$& <h3> Quoted-Printable <node> Quoted-Printable <p> -<a node="RFC 1521">RFC 1521</a> $B$GDj5A$5$l$F$$$k(B <a -node="MIME">MIME</a> $B$K$*$1$k(B <a node="binary">binary data</a> $B$N(B -network $B$G$NJQ49K!$N#1$D!#(B +<dref>RFC 2045</dref> $B$GDj5A$5$l$F$$$k(B <dref>MIME</dref> $B$K$*$1$k(B +<dref>binary data</dref> $B$N(B network $B$G$NJQ49K!$N#1$D!#(B <p> `=' $B$d@)8fJ8;z$d(B 128 $B0J>e$NJ8;z$J$I$O(B `=AF' $B$N$h$&$K(B `=' $B$N8e$KB3$/(B 16 -$B?J?t$GI=8=$9$k!#$3$N$?$a!"(B<a node="ASCII">ASCII</a> $BJ8;zCf?4$N(B data $B$G(B -$B$O(B <a node="Base64">Base64</a> $B$KHf$Y$k$H2DFI@-$,9b$/$J$k2DG=@-$,$"$k!#(B +$B?J?t$GI=8=$9$k!#$3$N$?$a!"(B<dref>ASCII</dref> $BJ8;zCf?4$N(B data $B$G$O(B +<dref>Base64</dref> $B$KHf$Y$k$H2DFI@-$,9b$/$J$k2DG=@-$,$"$k!#(B <p> $B$7$+$7$J$,$i!"(BEBCDIC $B$K$OB8:_$7$J$$J8;z$rMxMQ$9$k>l9g!"(BEBCDIC $B$rMxMQ$7(B $B$F$$$k(B network $B$G$O0BA4$KE>Aw$9$k$3$H$,$G$-$:!"(BBase64 $B$KHf$Y$F0BA4@-$O(B @@ -1245,19 +1215,6 @@ RFC. <dref>RFC 934</dref> $B$rMQ$$$k!#(B date="April 1990"> -<h3> RFC 1521 <node> RFC 1521 -<p> -<a node="MIME">MIME</a> $B$rDj5A$7$F$$$k(B RFC $B$N#1$D!#(B - -<rfc number="1521" type="Standards Track" author="N. Borenstein and - N. Freed" title="MIME (Multipurpose Internet Mail - Extensions) Part One: Mechanisms for Specifying and - Describing the Format of Internet Message Bodies" - date="September 1993" obsolete="1341"> - -(<a node="encoded-word">RFC 1522</a>) - - <h3> RFC 1557 <node> RFC 1557 <p> @@ -1286,6 +1243,44 @@ field</dref> $B$N(B parameter $B$rDj5A$7$F$$$k!#(B date="March 1996"> +<h3> RFC 2045 +<node> RFC 2045 +<p> +<rfc number="2045" type="Standards Track" author="N. Freed and + N. Borenstein" title="Multipurpose Internet Mail + Extensions (MIME) Part One: Format of Internet Message + Bodies" date="November 1996" obsolete="1521, 1522, + 1590"> + + +<h3> RFC 2046 +<node> RFC 2046 +<p> +<rfc number="2046" type="Standards Track" author="N. Freed and + N. Borenstein" title="Multipurpose Internet Mail + Extensions (MIME) Part Two: Media Types" + date="November 1996" obsolete="1521, 1522, 1590"> + + +<h3> RFC 2048 +<node> RFC 2048 +<p> +<rfc number="2048" type="Standards Track" author="N. Freed, J. Klensin + and J. Postel" title="Multipurpose Internet Mail + Extensions (MIME) Part Four: Registration Procedures" + date="November 1996" obsolete="1521, 1522, 1590"> + + +<h3> RFC 2049 +<node> RFC 2049 +<p> +<rfc number="2049" type="Standards Track" author="N. Freed and + N. Borenstein" title="Multipurpose Internet Mail + Extensions (MIME) Part Five: Conformance Criteria and + Examples" date="November 1996" obsolete="1521, 1522, + 1590"> + + <h3> plain text <node> plain text <p> @@ -1312,9 +1307,9 @@ node="multipart/encrypted"><concept>multipart/encrypted</concept></a> <h3> text/enriched <node> text/enriched <p> -<a node="RFC 1521">RFC 1521</a> $B$GDj5A$5$l$?(B -<concept>text/richtext</concept> $B$KBe$o$C$F!"=qBN$dAHHG$K4X$9$k>pJs$r(B -$B;}$C$?(B text$B$rI=8=$9$k$?$a$N(B <dref>content-type</dref>. +RFC 1521 $B$GDj5A$5$l$?(B <concept>text/richtext</concept> $B$KBe$o$C$F!"=q(B +$BBN$dAHHG$K4X$9$k>pJs$r;}$C$?(B text$B$rI=8=$9$k$?$a$N(B <dref>media +type</dref>. <rfc name="text/enriched" number="1896" author="P. Resnick and A. Walker" title="The text/enriched MIME Content-type" @@ -1324,8 +1319,8 @@ node="multipart/encrypted"><concept>multipart/encrypted</concept></a> <h3> text/plain <node> text/plain <p> -<dref>RFC 1521</dref> $B$GDj5A$5$l$?!"(B<dref>plain text</dref> $B$rI=8=$9$k(B -$B$?$a$N(B <dref>content-type</dref>. +<dref>RFC 2046</dref> $B$GDj5A$5$l$?!"(B<dref>plain text</dref> $B$rI=8=$9$k(B +$B$?$a$N(B <dref>media type</dref>. <p> $BHs(B MIME message $B$J$I$N(B content-type $B$,Dj5A$5$l$J$$(B part $B$O(B <dref>MIME charset</dref> $B$,(B <dref>us-ascii</dref> $B$G$"$k(B diff --git a/doc/tm-ja.texi b/doc/tm-ja.texi index 5bd5549..92e1bca 100644 --- a/doc/tm-ja.texi +++ b/doc/tm-ja.texi @@ -59,67 +59,10 @@ mime/editor-mode (@ref{(tm-edit-ja)}) @menu -* What is MIME?:: $B$H$3$m$G!"(BMIME $B$C$F$$$C$?$$2?!)(B -* How is MIME?:: MIME $B$G$I$s$J$3$H=PMh$k$N!)(B * Glossary:: $BMQ8l(B @end menu -@node What is MIME?, How is MIME?, Introduction, Introduction -@section $B$H$3$m$G!"(BMIME $B$C$F$$$C$?$$2?!)(B - -@cindex{MIME}@strong{MIME} $B$H$O(B @cindex{Multipurpose Internet Mail -Extensions}@strong{Multipurpose Internet Mail Extensions} $B$NN,$G!"=>Mh$N!"(B -$B4pK\E*$K(B us-ascii (@ref{us-ascii}) $B$N(B plain text (@ref{plain text}) $B$G$"$C(B -$B$?(B Internet Mail/News $B$KBP$9$k3HD%$K$J$C$F$$$^$9!#(B@refill - -MIME $B$K$O!"(BRFC 1521 (@ref{RFC 1521}) $B$G5,Dj$5$l$F$$$kB?L\E*(Bmessage $B$NB&(B -$BLL$H!"(BRFC 1522 (@ref{encoded-word}) $B$G5,Dj$5$l$F$$$k(Bmessage header $B$K$*(B -$B$1$kHs(B ASCII $BJ8;z$NI=8=K!$N$h$&$J!"B?8@8l2=$NB&LL$,$"$j$^$9!#(B - - -@node How is MIME?, Glossary, What is MIME?, Introduction -@section MIME $B$G$I$s$J$3$H=PMh$k$N!)(B - -$B$^$:!"B?L\E*(B message $B$NB&LL$r9M$($k$H!"=>Mh$N(B Internet Mail/News $B$,4pK\(B -$BE*$K(B us-ascii (@ref{us-ascii}) $B$N(B plain text (@ref{plain text}) $B$7$+I=8=(B -$B$G$-$J$+$C$?$N$KBP$7$F!"3($d2;@<$dF02h$J$I$NMM!9$J(B data $B$rI=8=$9$k$3$H$,(B -$B$G$-$^$9!#(B@refill - -$B$^$?!"LLGr$$$3$H$K!"(Bftp (@ref{FTP}) $B$d(B ftp mail $B$r$7$?$j!"(Bfile $B$r<h$j=P(B -$B$7$?$j!"(Bpatch $B$rEv$F$?$j!"$H$$$C$?!"!X<jB3$-!Y$rAw$k$3$H$,$G$-$^$9!#(B - -$B!t(B $B$b$C$H$b!"$3$&$$$&$N$O!"$"$k0UL#$G$O4m81$@$C$?$j$9$k$N$G$9$,!#(B@refill - -$B$3$&$7$?(B message $B$O!"FbMF$N<oN`$r(B -@cindex{Content-Type}@strong{Content-Type} (@ref{Content-Type field}) $B$H(B -$B$$$&(B field $B$K=q$$$?(B message $B$N7?$G;XDj$7$^$9!#$9$k$H!"<u$1<j$O3F(B -content-type (@ref{content-type}) $B$KBP1~$7$?=hM}$N<oN`$r@_Dj$7$F$*$$$F!"(B -message $B$r!XFI$`!Y$@$1$G!"3($dF02h$r8+$?$j!"2;$rLD$i$7$?$j!"(Bftp $B$G(B file -$B$r<h$C$?$j!"(Bfile$B$r<h$j=P$7$?$j$G$-$^$9!#(B@refill - -$B$^$?!"$"$k(B message $B$KJ#?t$N(B content-type $B$,B8:_$9$k(B -@cindex{Multipart}@strong{Multipart} (@ref{multipart}) $B$N(B message $B$H$$$&(B -$B$N$b2DG=$G!"0l$D$N(B message $B$NCf$K!"3($H2;$HJ8>O$rF~$l$?$j$H$$$C$?$h$&$J(B -$B$3$H$,$G$-$^$9!#(B@refill - -MIME $B$K$O$3$N$h$&$J!X@k8@!Y$N;WA[$,$"$k$h$&$K;W$o$l$^$9!#$D$^$j!"(B -us-ascii (@ref{us-ascii}) $B$r!V%"%k%U%!%Y%C%H!W$H$9$k(B MIME $B$H$$$&(B message -$B5-=R8@8l$G!"$$$m$$$m$J$b$N$r5-=R$7$F$$$3$&$H$$$&$3$H$G$9!#$3$l$O(B RFC -1522 (@ref{encoded-word}) $B$G5,Dj$5$l$?(B encoded-word $B$G$b$$$($k$H;W$$$^$9!#(B - -$B$=$7$F!"<u$1<j$O!"M}2r$G$-$J$$$b$N$OL5;k$9$k$,!"$=$N7k2L!"(Bdata $B$r2u$9$3(B -$B$H$O$7$J$$$H$$$&$b$N$,$"$j$^$9!#(B@refill - -$BNc$($P!"(BASCII (@ref{ASCII}) $B$7$+I=<($G$-$J$$4D6-$G(B JIS X0208 (@ref{JIS -X0208}) $B$H(B ISO 8859-1 (@ref{ISO 8859-1}) $B$,:.$8$C$?%F%-%9%H$r$b$i$C$?$i(B -$B:$$kLu$G$9$,!"$=$&$$$&;~$@$1B?8@8lC<Kv$r3+$/$H$$$&$h$&$J5;$,;H$($^$9!#(B - -$B$b$A$m$s!"(BMULE (@ref{MULE}) $B$N$h$&$JB?8@8l4D6-$K$*$$$F$b(B MUA (@ref{MUA}) -$B$KBP$7$FL@<(E*$K(B MIME charset (@ref{MIME charset}) $B$r<($9$3$H$OM-1W$G$7$g(B -$B$&!#(B - - -@node Glossary, , How is MIME?, Introduction +@node Glossary, , Introduction, Introduction @section $BMQ8l(B tm $B$G;H$o$l$F$$$kMQ8l$K$D$$$F2r@b$7$^$9!#(B @@ -140,7 +83,7 @@ tm $B$G;H$o$l$F$$$kMQ8l$K$D$$$F2r@b$7$^$9!#(B * Coded character set:: Coded character set$B!JId9f2=J8;z=89g!K(B, Character code$B!JJ8;zId9f!K(B * Code extension:: Code extension$B!JId9f3HD%!K(B * Content-Disposition:: Content-Disposition field -* content-type:: +* media type:: * Content-Type field:: * Emacs:: * encoded-word:: @@ -201,9 +144,12 @@ tm $B$G;H$o$l$F$$$kMQ8l$K$D$$$F2r@b$7$^$9!#(B * RFC 934:: * RFC 1036:: * RFC 1153:: -* RFC 1521:: RFC 1521 * RFC 1557:: * RFC 1922:: +* RFC 2045:: +* RFC 2046:: +* RFC 2048:: +* RFC 2049:: * plain text:: * Security multipart:: * text/enriched:: @@ -317,7 +263,7 @@ Interchange'', ANSI X3.4:1986. @node Base64, binary, ASCII, Glossary @subsection Base64 -RFC 1521 (@ref{RFC 1521}) $B$GDj5A$5$l$F$$$k(B MIME (@ref{MIME}) $B$K$*$1$k(B +RFC 2045 (@ref{RFC 2045}) $B$GDj5A$5$l$F$$$k(B MIME (@ref{MIME}) $B$K$*$1$k(B binary data (@ref{binary}) $B$N(B network $B$G$NJQ49K!$N#1$D!#(B@refill $B!X(B64 $B?J?t!Y$H$$$&0UL#$G!"(B3 byte $B$N(B data $B$r(B 0 $B$+$i(B 63 $B$N?t$rI=$9(B ASCII @@ -421,7 +367,7 @@ ISO 2022 (@ref{ISO 2022}) $B$G$N=*C<J8;z$O!"Bh#1LL$,(B `G', $BBh#2LL$,(B `H' $B$a$KMQ$$$k<jK!!#(BISO 2022 (@ref{ISO 2022}) $B$O$=$N#1$D!#(B -@node Content-Disposition, content-type, Code extension, Glossary +@node Content-Disposition, media type, Code extension, Glossary @subsection Content-Disposition field Content $B$NI=<($N;EJ}$d(B file $BL>$rI=8=$9$k$?$a$N(B field. MIME (@ref{MIME}) @@ -438,21 +384,36 @@ Experimental. -@node content-type, Content-Type field, Content-Disposition, Glossary -@subsection content-type +@node media type, Content-Type field, Content-Disposition, Glossary +@subsection media type -MIME (@ref{MIME}) $B$K$*$1$k(B part (@ref{part}) $B$N<oN`!#(B +MIME (@ref{MIME}) $B$K$*$1$k(B entity (@ref{entity}) $B$N<oN`!#(B @cindex{type}@strong{type} $B$H(B @cindex{subtype}@strong{subtype} $B$+$i$J$k!#(B -RFC 1521 (@ref{RFC 1521}) $B$GDj5A$5$l$F$$$k!#(B@refill +RFC 2046 (@ref{RFC 2046}) $B$GDj5A$5$l$F$$$k!#(B@refill + +type $B$OI8=`$G$O(B + +@itemize @bullet +@item +@cindex{text}@strong{text} +@item +@cindex{image}@strong{image} +@item +@cindex{audio}@strong{audio} +@item +@cindex{video}@strong{video} +@item +@cindex{application}@strong{application} +@item +@cindex{multipart}@strong{multipart} (@ref{multipart}) +@item +@cindex{message}@strong{message} +@end itemize -type $B$OI8=`$G$O(B @cindex{application}@strong{application}, -@cindex{audio}@strong{audio}, @cindex{image}@strong{image}, -@cindex{message}@strong{message}, @cindex{multipart}@strong{multipart} -(@ref{multipart}), @cindex{text}@strong{text}, -@cindex{video}@strong{video} $B$,Dj5A$5$l!"$=$l$>$l$K$O(B -application/octet-stream, audio/basic, image/jpeg, multipart/mixed -(@ref{multipart/mixed}), text/plain (@ref{text/plain}), video/mpeg $B$J$I(B -$B$N$5$^$6$^$J(B subtype $B$,Dj5A$5$l$F$$$k!#(B +@noindent +$B$,Dj5A$5$l!"$=$l$>$l$K$O(B application/octet-stream, audio/basic, +image/jpeg, multipart/mixed (@ref{multipart/mixed}), text/plain +(@ref{text/plain}), video/mpeg $B$J$I$N$5$^$6$^$J(B subtype $B$,Dj5A$5$l$F$$$k!#(B @noindent @strong{[$BCm0U(B]} @@ -463,8 +424,8 @@ application/octet-stream, audio/basic, image/jpeg, multipart/mixed @end quotation -content-type $B$O!"(BRFC 1521 $B$GDj5A$5$l$F$$$k$b$N$K2C$($F!"EPO?$9$k$3$H$b$G(B -$B$-$k!#8=:_!"EPO?$5$l$F$$$k$b$N$O(B MEDIA TYPES +media type $B$O!"(BRFC 2046 $B$GDj5A$5$l$F$$$k$b$N$K2C$($F!"EPO?$9$k$3$H$b$G$-(B +$B$k!#8=:_!"EPO?$5$l$F$$$k$b$N$O(B MEDIA TYPES (ftp://ftp.isi.edu/in-notes/iana/assignments/media-types) $B$G;2>H$G$-$k!#(B $B$^$?!"(Btype $B$b$7$/$O(B subtype $B$K!"A0$K(B `x-' $B$rIU$1$?(B @@ -477,20 +438,20 @@ content-type $B$ONJ2r$rF@$?<T$N4V$G$7$+2r<a$G$-$J$$$N$GMxMQ$K$OCm0U$9$k$3(B -@node Content-Type field, Emacs, content-type, Glossary +@node Content-Type field, Emacs, media type, Glossary @subsection Content-Type field -content-type (@ref{content-type}) $B$d(B MIME charset (@ref{MIME charset}) -$B$J$I$N(B part $B$K4X$9$k>pJs$rI=8=$9$k$?$a$N(B field. RFC 1521 (@ref{RFC -1521}) $B$GDj5A$5$l$F$$$k!#(B +media type (@ref{media type}) $B$d(B MIME charset (@ref{MIME charset}) $B$J$I(B +$B$N(B part $B$K4X$9$k>pJs$rI=8=$9$k$?$a$N(B field. RFC 2045 (@ref{RFC 2045}) $B$G(B +$BDj5A$5$l$F$$$k!#(B @noindent @strong{[Memo]} @quotation $BNr;KE*$K$O(B RFC 1049 $B$G(B Content-Type field $B$,Ds0F$5$l$F$$$k!#C"$7!"$3$3$G(B -$B$O(B type $B$H(B subtype $B$N6hJL$O$J$$!#$7$+$7!"J8K!E*$K$O(B RFC 1521 parser$B$O(B -RFC 1049 $B$K4p$E$/(B message $B$rL$CN$N(B content-type $B$r;}$C$?(B message $B$H$7$F(B +$B$O(B type $B$H(B subtype $B$N6hJL$O$J$$!#$7$+$7!"J8K!E*$K$O(B MIME parser $B$O(B RFC +1049 $B$K4p$E$/(B message $B$rL$CN$N(B content-type $B$r;}$C$?(B message $B$H$7$F(B parse $B$G$-$k$@$m$&!#(B @end quotation @@ -554,15 +515,15 @@ GNU Emacs $B$NJQ<o$NAm>N$H$9$k!#(B @subsection encoded-word header $B$K$*$1$kHs(B ASCII (@ref{ASCII}) $BJ8;z$NI=8=!#(B@cindex{RFC -1522}@strong{RFC 1522} $B$GDj5A$5$l$F$$$k!#(B@refill +2047}@strong{RFC 2047} $B$GDj5A$5$l$F$$$k!#(B@refill -@cindex{Standards Track}@cindex{RFC 1522} +@cindex{Standards Track}@cindex{RFC 2047} @noindent -[RFC 1522] +[RFC 2047] @quotation -K. Moore, ``MIME (Multipurpose Internet Mail Extensions) Part Two: -Message Header Extensions for Non-ASCII Text'', September 1993, -Standards Track. +K. Moore, ``MIME (Multipurpose Internet Mail Extensions) Part Three: +Message Header Extensions for Non-ASCII Text'', November 1996, Standards +Track (obsolete RFC 1521,1522,1590). @end quotation @@ -838,7 +799,7 @@ ISO 2022 (@ref{ISO 2022}) $B$K4p$$$F!"(BASCII (@ref{ASCII}) $B$K(B ISO 8859- (@ref{ISO 8859-1}) $B$r(B 8bit (@ref{8bit}) $B$GId9f3HD%(B (@ref{Code extension})$B$7$F$$$k!#(B@refill -RFC 1521 (@ref{RFC 1521}) $B$GDj5A$5$l$F$$$k!#(B +RFC 2046 (@ref{RFC 2046}) $B$GDj5A$5$l$F$$$k!#(B @node ISO 8859-2, iso-8859-2, iso-8859-1, Glossary @@ -867,7 +828,7 @@ ISO 2022 (@ref{ISO 2022}) $B$K4p$$$F!"(BASCII (@ref{ASCII}) $B$K(B ISO 8859- (@ref{ISO 8859-2}) $B$r(B 8bit (@ref{8bit}) $B$GId9f3HD%(B (@ref{Code extension})$B$7$F$$$k!#(B@refill -RFC 1521 (@ref{RFC 1521}) $B$GDj5A$5$l$F$$$k!#(B +RFC 2046 (@ref{RFC 2046}) $B$GDj5A$5$l$F$$$k!#(B @node ISO 8859-3, ISO 8859-4, iso-8859-2, Glossary @@ -923,7 +884,7 @@ ISO 2022 (@ref{ISO 2022}) $B$K4p$$$F!"(BASCII (@ref{ASCII}) $B$K(B ISO 8859- (@ref{ISO 8859-5}) $B$r(B 8bit (@ref{8bit}) $B$GId9f3HD%(B (@ref{Code extension})$B$7$F$$$k!#(B@refill -RFC 1521 (@ref{RFC 1521}) $B$GDj5A$5$l$F$$$k!#(B +RFC 2046 (@ref{RFC 2046}) $B$GDj5A$5$l$F$$$k!#(B @node ISO 8859-6, ISO 8859-7, iso-8859-5, Glossary @@ -1163,7 +1124,7 @@ Interchange (Hangul and Hanja)'', KS C 5601:1987. @subsection message/rfc822 $BEAE}E*$J(B RFC 934 (@ref{RFC 934}) $B$KBe$o$j!"(BRFC 822 (@ref{RFC 822}) $B$GDj(B -$B5A$5$l$k(B mail $B$rI=$9(B MIME $B$N7A<0!#(BRFC 1521 (@ref{RFC 1521}) $B$GDj5A$5$l$F(B +$B5A$5$l$k(B mail $B$rI=$9(B MIME $B$N7A<0!#(BRFC 2046 (@ref{RFC 2046}) $B$GDj5A$5$l$F(B $B$$$k!#(B @@ -1187,11 +1148,30 @@ Internet Mail Extensions} $B$NN,$G!"(BInternet $B$N(B mail $B$d(B news $B plain text (@ref{us-ascii}) $B0J30$NJ8;z$r;H$&$?$a$N(B RFC 822 (@ref{RFC 822}) $B$KBP$9$k3HD%!#(B@refill -RFC 1521 (@ref{RFC 1521}) $B$H(B RFC 1522 (@ref{encoded-word}) $B$GDj5A$5$l$F(B -$B$$$k!#(B@refill +RFC 2045 $B$OKAF,$G<!$N$h$&$K=R$Y$F$$$k!'(B@refill -(cf. @ref{What is MIME?}) +STD 11, RFC 822 $B$O!"(BUS-ASCII message header $B$K4X$7$FHs>o$K>\:Y$K5,Dj$7(B +$B$?(B message $BI=8=(B protocol $B$rDj5A$7$F$$$k!#$7$+$7!"$=$l$OC1$K(B flat $B$J(B +US-ASCII text $B$N$_$KN1$^$j!"(Bmessage $B$NFbMF$d(B message body $B$K4X$9$k5,Dj(B +$B$O$J$5$l$F$$$J$$!#(BMultipurpose Internet Mail Extensions, $B$"$k$$$O(B MIME +$B$HAm>N$5$l$k!"$3$N0lO"$NJ8=q$O!"0J2<$N;v$r2DG=$H$9$k$?$a$K(B message $B$N(B +$B7A<0$r:FDj5A$7$?!'(B +@enumerate +@item +$BJ8=q(B message body $B$K$*$1$k(B US-ASCII $B0J30$NJ8;z=89g(B +@item +$BHsJ8=q(B message body +@item +$BJ#?t$NItJ,$+$i$J$k(B message body +@item +US-ASCII $B0J30$NJ8;z=89g$+$i$J$kJ8=q(B header $B>pJs(B +@end enumerate + + +RFC 2045 (@ref{RFC 2045}), RFC 2046 (@ref{RFC 2046}), RFC 2047 +(@ref{encoded-word}), RFC 2048 (@ref{RFC 2048}), RFC 2049 (@ref{RFC +2049}) $B$GDj5A$5$l$F$$$k!#(B @node MIME charset, MTA, MIME, Glossary @@ -1201,7 +1181,7 @@ Content-Type field (@ref{Content-Type field}) $B$d(B encoded-word (@ref{encoded-word}) $B$N(B charset parameter $B$GMQ$$$i$l$kEPO?$5$l$?Id9f2=J8(B $B;z=89g(B (@ref{Coded character set})$B!#(B@refill -RFC 1521 (@ref{RFC 1521}) $B$GDj5A$5$l$F$$$k!#(B@refill +RFC 2045 (@ref{RFC 2045}) $B$GDj5A$5$l$F$$$k!#(B@refill iso-2022-jp (@ref{iso-2022-jp}) $B$d(B euc-kr (@ref{euc-kr}) $B$O$=$N#1$D!#(B $B!J$3$3$G$O!"(BMIME charset $B$OJ8;z=89g(B (@ref{Character set})$B$H6hJL$7$F>.J8(B @@ -1253,12 +1233,12 @@ Enhancement to GNU Emacs'', Proc. of INET'93, August, 1993.@refill @node multipart, multipart/alternative, MULE, Glossary @subsection Multipart -$B#1$D$N(B message (@ref{message}) $B$KJ#?t$N(B part $B$rF~$l$k$?$a$N(B MIME -(@ref{MIME}) $B$K$*$1$kI=8=K!!"$b$7$/$O!"J#?t$N(B part $B$+$i$J$k(B message $B$r;X(B -$B$9!#(B(cf. @ref{content-type}) @refill +$B#1$D$N(B message (@ref{message}) $B$KJ#?t$N(B entity (@ref{entity}) $B$rF~$l$k$?(B +$B$a$N(B MIME (@ref{MIME}) $B$K$*$1$k(B media type (@ref{media type}) $B$N#1$D!"$b(B +$B$7$/$O!"J#?t$N(B entity $B$+$i$J$k(B message $B$r;X$9!#(B@refill $B8=:_!"Dj5A$5$l$F$$$k(B @cindex{multipart}@strong{multipart} $B$H$7$F$O!"(BRFC -1521 (@ref{RFC 1521}) $B$GDj5A$5$l$?(B +2046 (@ref{RFC 2046}) $B$GDj5A$5$l$?(B @itemize @bullet @item @@ -1291,15 +1271,15 @@ multipart/encrypted (@ref{multipart/encrypted}) multipart (@ref{multipart}) $B$N#1$D$G!"F1$8>pJs$r0[$C$?7A<0$GF~$l!"A*Br;h(B $B$H$9$k>l9g$KMQ$$$k!#(B@refill -(cf. @ref{RFC 1521}) +(cf. @ref{RFC 2046}) @node multipart/digest, multipart/encrypted, multipart/alternative, Glossary @subsection multipart/digest -multipart (@ref{multipart}) $B$N#1$D$G!"4^$^$l$k(B part $B$N(B default $B$N(B -content-type (@ref{content-type}) $B$,(B multipart/mixed +multipart (@ref{multipart}) $B$N#1$D$G!"4^$^$l$k(B entity (@ref{entity}) $B$N(B +default $B$N(Bmedia type (@ref{media type}) $B$,(B multipart/mixed (@ref{multipart/mixed}) $B$J$I$N>l9g(B text/plain (@ref{text/plain}) $B$G$"$k(B $B$N$KBP$7!"(B@cindex{multipart/digest}@strong{multipart/digest}$B$G$O(B message/rfc822 (@ref{message/rfc822}) $B$,MQ$$$i$l$kE@$,0[$J$k!#(B@refill @@ -1307,7 +1287,7 @@ message/rfc822 (@ref{message/rfc822}) $B$,MQ$$$i$l$kE@$,0[$J$k!#(B@refill $B$3$l$OEAE}E*$J(B RFC 1153 (@ref{RFC 1153}) $B$K4p$E$/(B encapsulation (@ref{encapsulation}) $B$KBe$o$k$b$N$G$"$k!#(B@refill -(cf. @ref{RFC 1521}) +(cf. @ref{RFC 2046}) @@ -1327,7 +1307,7 @@ RFC 1847 $B$GDj5A$5$l$?(B Security multipart (@ref{Security multipart}) $B$N# multipart (@ref{multipart}) $B$N<gMW$J(B subtype $B$G!"J#?t$N(B part $B$r=g=xIU$1(B $B$FJB$Y$k>l9g$KMQ$$$k!#(B@refill -(cf. @ref{RFC 1521}) +(cf. @ref{RFC 2046}) @@ -1337,7 +1317,7 @@ multipart (@ref{multipart}) $B$N<gMW$J(B subtype $B$G!"J#?t$N(B part $B$r=g multipart (@ref{multipart}) $B$N#1$D$G!"J#?t$N(B part $B$r=g=xIU$1$:$K4^$a$k>l(B $B9g$KMQ$$$k!#(B@refill -(cf. @ref{RFC 1521}) +(cf. @ref{RFC 2046}) @@ -1436,8 +1416,8 @@ M. Elkins, ``MIME Security with Pretty Good Privacy (PGP)'', October @node Quoted-Printable, RFC 821, PGP/MIME, Glossary @subsection Quoted-Printable -RFC 1521 (@ref{RFC 1521}) $B$GDj5A$5$l$F$$$k(B MIME (@ref{MIME}) $B$K$*$1$k(B -binary data (@ref{binary}) $B$N(B network $B$G$NJQ49K!$N#1$D!#(B@refill +RFC 2045 (@ref{RFC 2045}) $B$GDj5A$5$l$F$$$k(B MIME (@ref{MIME}) $B$K$*$1$k(B +binary data (@ref{binary data}) $B$N(B network $B$G$NJQ49K!$N#1$D!#(B@refill `=' $B$d@)8fJ8;z$d(B 128 $B0J>e$NJ8;z$J$I$O(B `=AF' $B$N$h$&$K(B `=' $B$N8e$KB3$/(B 16 $B?J?t$GI=8=$9$k!#$3$N$?$a!"(BASCII (@ref{ASCII}) $BJ8;zCf?4$N(B data $B$G$O(B @@ -1527,7 +1507,7 @@ December 1987, (obsolete RFC 850). -@node RFC 1153, RFC 1521, RFC 1036, Glossary +@node RFC 1153, RFC 1557, RFC 1036, Glossary @subsection RFC 1153 $BJ#?t$N(B Internet mail (@ref{RFC 822}) $B$r(B @@ -1550,26 +1530,7 @@ F. Wancho, ``Digest Message Format'', April 1990. -@node RFC 1521, RFC 1557, RFC 1153, Glossary -@subsection RFC 1521 - -MIME (@ref{MIME}) $B$rDj5A$7$F$$$k(B RFC $B$N#1$D!#(B - -@cindex{Standards Track}@cindex{RFC 1521} -@noindent -[RFC 1521] -@quotation -N. Borenstein and N. Freed, ``MIME (Multipurpose Internet Mail -Extensions) Part One: Mechanisms for Specifying and Describing the -Format of Internet Message Bodies'', September 1993, Standards Track -(obsolete RFC 1341). -@end quotation - - -(RFC 1522 (@ref{encoded-word})) - - -@node RFC 1557, RFC 1922, RFC 1521, Glossary +@node RFC 1557, RFC 1922, RFC 1153, Glossary @subsection RFC 1557 euc-kr (@ref{euc-kr}) $B$H(B iso-2022-kr (@ref{iso-2022-kr}) $B$H$$$&4Z9q8l$N(B @@ -1585,7 +1546,7 @@ Messages'', December 1993, Informational. -@node RFC 1922, plain text, RFC 1557, Glossary +@node RFC 1922, RFC 2045, RFC 1557, Glossary @subsection RFC 1922 iso-2022-cn (@ref{iso-2022-cn}), iso-2022-cn-ext @@ -1608,7 +1569,63 @@ Informational. -@node plain text, Security multipart, RFC 1922, Glossary +@node RFC 2045, RFC 2046, RFC 1922, Glossary +@subsection RFC 2045 + +@cindex{Standards Track}@cindex{RFC 2045} +@noindent +[RFC 2045] +@quotation +N. Freed and N. Borenstein, ``Multipurpose Internet Mail Extensions +(MIME) Part One: Format of Internet Message Bodies'', November 1996, +Standards Track (obsolete RFC 1521, 1522, 1590). +@end quotation + + + +@node RFC 2046, RFC 2048, RFC 2045, Glossary +@subsection RFC 2046 + +@cindex{Standards Track}@cindex{RFC 2046} +@noindent +[RFC 2046] +@quotation +N. Freed and N. Borenstein, ``Multipurpose Internet Mail Extensions +(MIME) Part Two: Media Types'', November 1996, Standards Track (obsolete +RFC 1521, 1522, 1590). +@end quotation + + + +@node RFC 2048, RFC 2049, RFC 2046, Glossary +@subsection RFC 2048 + +@cindex{Standards Track}@cindex{RFC 2048} +@noindent +[RFC 2048] +@quotation +N. Freed, J. Klensin and J. Postel, ``Multipurpose Internet Mail +Extensions (MIME) Part Four: Registration Procedures'', November 1996, +Standards Track (obsolete RFC 1521, 1522, 1590). +@end quotation + + + +@node RFC 2049, plain text, RFC 2048, Glossary +@subsection RFC 2049 + +@cindex{Standards Track}@cindex{RFC 2049} +@noindent +[RFC 2049] +@quotation +N. Freed and N. Borenstein, ``Multipurpose Internet Mail Extensions +(MIME) Part Five: Conformance Criteria and Examples'', November 1996, +Standards Track (obsolete RFC 1521, 1522, 1590). +@end quotation + + + +@node plain text, Security multipart, RFC 2049, Glossary @subsection plain text $B=qBN$dAHHG$K4X$9$k>pJs$r;}$?$J$$(B $BJ8;zId9f(B(@ref{Coded character set})$B$N$_(B @@ -1640,9 +1657,9 @@ Multiparts for MIME: Multipart/Signed and Multipart/Encrypted'', October @node text/enriched, text/plain, Security multipart, Glossary @subsection text/enriched -RFC 1521 (@ref{RFC 1521}) $B$GDj5A$5$l$?(B -@cindex{text/richtext}@strong{text/richtext} $B$KBe$o$C$F!"=qBN$dAHHG$K4X(B -$B$9$k>pJs$r;}$C$?(B text$B$rI=8=$9$k$?$a$N(B content-type (@ref{content-type}). +RFC 1521 $B$GDj5A$5$l$?(B @cindex{text/richtext}@strong{text/richtext} $B$KBe(B +$B$o$C$F!"=qBN$dAHHG$K4X$9$k>pJs$r;}$C$?(B text$B$rI=8=$9$k$?$a$N(B media type +(@ref{media type}). @cindex{text/enriched}@cindex{RFC 1896} @noindent @@ -1657,8 +1674,8 @@ February 1996, (obsolete RFC 1563). @node text/plain, tm-kernel, text/enriched, Glossary @subsection text/plain -RFC 1521 (@ref{RFC 1521}) $B$GDj5A$5$l$?!"(Bplain text (@ref{plain text}) $B$r(B -$BI=8=$9$k$?$a$N(B content-type (@ref{content-type}).@refill +RFC 2046 (@ref{RFC 2046}) $B$GDj5A$5$l$?!"(Bplain text (@ref{plain text}) $B$r(B +$BI=8=$9$k$?$a$N(B media type (@ref{media type}).@refill $BHs(B MIME message $B$J$I$N(B content-type $B$,Dj5A$5$l$J$$(B part $B$O(B MIME charset (@ref{MIME charset}) $B$,(B us-ascii (@ref{us-ascii}) $B$G$"$k(B diff --git a/doc/tm-view-en.info b/doc/tm-view-en.info new file mode 100644 index 0000000..e1f5e85 --- /dev/null +++ b/doc/tm-view-en.info @@ -0,0 +1,1103 @@ +Info file: tm-view-en.info, -*-Text-*- +produced by `texinfo-format-buffer' +from file `tm-view-en.texi' +using `texinfmt.el' version 2.32 of 19 November 1993. + + + +File: tm-view-en.info, Node: Top, Next: Introduction, Prev: (dir), Up: (dir) + +tm-view 7.77 Reference Manual (English Version) +*********************************************** + + +This file documents tm-view, a MIME Viewer for GNU Emacs. + +* Menu: + +* Introduction:: What is tm-view? +* MIME display:: Structure of display in mime/viewer-mode +* mime/viewer-mode:: Navigation in mime/viewer-mode +* method:: Mechanism of decoding +* Two buffers for an article:: raw-article-buffer and preview-buffer +* API:: Functions to decode MIME message +* Concept Index:: +* Function Index:: +* Variable Index:: + + + +File: tm-view-en.info, Node: Introduction, Next: MIME display, Prev: Top, Up: Top + +What is tm-view? +**************** + +The tm-view is a general MIME viewer running on GNU Emacs. + +tm-view provides the major-mode called `mime/viewer-mode' (*Note +mime/viewer-mode::) to read MIME message for MUA. MUA (*Note +(tm-en)MUA::) implementer can use it to add MIME function. + +tm-view is a user interface kernel to view and navigate MIME message. +tm-view drives some programs to navigate each content-type +(*Note (tm-en)content-type::)s, they are called +*method* (*Note method::). tm-view calls some +programs to display each contents and headers in preview buffer, they +are called *filter* (*Note Two buffers for an article::). Method and +filters are tm-view application program. They expand tm-view to treat +various kinds of MIME types. + + + + +File: tm-view-en.info, Node: MIME display, Next: mime/viewer-mode, Prev: Introduction, Up: Top + +Structure of display in mime/viewer-mode +**************************************** + +In mime/viewer-mode (*Note mime/viewer-mode::), following are displayed +for each parts: + + [content-button] + (content-header) + + (content-body) + (content-separator) + +You can change design or stop to display if you specify for each +conditions, such as content-types. + +Example: + + From: morioka@jaist.ac.jp (MORIOKA Tomohiko) + Subject: Re: Question + Newsgroups: zxr.message.mime + Date: 22 Oct 93 11:02:44 + Mime-Version: 1.0 + Organization: Japan Advanced Institute of Science and Technology, + Ishikawa, Japan + + [1 (text/plain)] + How to compose MIME message in MIME-Edit mode. + + Press `C-c C-x ?' then help message will be displayed: + + C-c C-x C-t insert a text message. + C-c C-x TAB insert a (binary) file. + C-c C-x C-e insert a reference to external body. + C-c C-x C-v insert a voice message. + C-c C-x C-y insert a mail or news message. + C-c C-x RET insert a mail message. + C-c C-x C-s insert a signature file at end. + C-c C-x t insert a new MIME tag. + C-c C-x a enclose as multipart/alternative. + C-c C-x p enclose as multipart/parallel. + C-c C-x m enclose as multipart/mixed. + C-c C-x d enclose as multipart/digest. + C-c C-x s enclose as PGP signed. + C-c C-x e enclose as PGP encrypted. + C-c C-x C-k insert PGP public key. + C-c C-x C-p preview editing MIME message. + ... + + So press `C-c C-x C-i' and specify file name you want to include. + + MIME encoding for binary file is normally Base64. + + [2 (image/gif)] + + [3 (text/plain)] + + In this way, it is finish a message attaching a picture. + + ======================== A cup of Russian tea ======================== + ============ * not by jam, not by marmalade, by honey * ============ + ============ MORIOKA Tomohiko ============ + =============== Internet E-mail: <morioka@jaist.ac.jp> =============== + + + +* Menu: + +* content-button:: +* content-header:: +* content-body:: +* content-separator:: + + + +File: tm-view-en.info, Node: content-button, Next: content-header, Prev: MIME display, Up: MIME display + +content-button +============== + +content-subject displays abstract for the part. It is placed in top of +the part. + +In default, it is displayed following design: + + [1.3 test (text/plain)] + + +First number field represents position of a content in the part. It is +called *content-number*. It can be considered as the chapter number in +the message. + +Second string part represents title. It is created by following: + + 1. name paramater or x-name parameter in Content-Type field (*Note + (tm-en)Content-Type field::) + 2. Content-Description field (*Note (tm-en)Content-Description + field::) or Subject field + 3. filename of uuencode + + +If they are not exists, space is displayed. + +Third parenthesis part represents content-type/subtype of the part. If +it is non-MIME part, `nil' is displayed. + +Content-button is used like icon when content-header (*Note +content-header::) and content-body (*Note content-body::) are hidden. +For example: + + [2 (image/gif)] + +if you press `v' key, GIF image is displayed. + +If mouse operations are available, you can press content-button by mouse +button-2 (center button of 3 button-mouse) to play, similarly to press +`v' key. (cf. *Note mime/viewer-mode::) + +By the way, it is annoying to display content-button if content-header +is displayed. So tm-view provides a mechanism to specify conditions to +display content-button. + + + -- Variable: mime-viewer/content-button-ignored-ctype-list + + List of content-types. + + If content-type of a part is a member of this list, its + content-button is not displayed. + + + + + +File: tm-view-en.info, Node: content-header, Next: content-body, Prev: content-button, Up: MIME display + +content-header +============== + +A content header displays the header portion of a part in the +preview-buffer. However it is annoying to display header for every +parts, so tm-view provides a mechanism to specify its condition. + +When the function `mime-viewer/header-visible-p' returns `t' for +reversed-content-number of a part, content-header is displayed. + +This judge function returns `t' when a part is root or content-type of +its parent is a member of the variable +`mime-viewer/childrens-header-showing-Content-Type-list'. + +If you want to change this condition, please redefine it. Notice that +it refers variable +`mime-viewer/childrens-header-showing-Content-Type-list', however if you +redefine function `mime-viewer/header-visible-p', it may not work. So +if you want to redefine it, it should be refer variable +`mime-viewer/childrens-header-showing-Content-Type-list'. + +When content-header is displayed, content-header are formated by the +program called by +*content-header-filter*. +Content-header-filter is searched from variable +`mime-viewer/content-header-filter-alist'. Its key is major-mode of the +raw-article-buffer (*Note raw-article-buffer::). If not found, function +`mime-viewer/default-content-header-filter' is called. + + + -- Variable: mime-viewer/childrens-header-showing-Content-Type-list + + List of content-types. If content-type of parent of a part is a + member of this variable, its content-header is displayed. Default + value is `'("message/rfc822" "message/news")'. + + This variable is referred by the function + `mime-viewer/header-visible-p'. + + + + -- Function: mime-viewer/header-visible-p RCNUM CINFO &optional CTYPE + + Returns `t' if a part which reversed-content-number is RCNUM in + content-info CINFO is displayed. + + If you know content-type, you can specify by CTYPE. + + + + -- Variable: mime-viewer/content-header-filter-alist + + Association-list whose key is major-mode of a raw-article-buffer, + value is content-header-filter. + + + + -- Function: mime-viewer/default-content-header-filter + + It is called when content-header-filter is not found in variable + `mime-viewer/content-header-filter-alist'. + + It refers `mime-viewer/ignored-field-regexp'. + + + + -- Variable: mime-viewer/ignored-field-list + + List of regular expression to represent invisible fields even if + content-header is displayed. + + Variable `mime-viewer/ignored-field-regexp' is created from it. + + Please use function `tm:add-fields' or `tm:delete-fields' to set + it. + + + + + +File: tm-view-en.info, Node: content-body, Next: content-separator, Prev: content-header, Up: MIME display + +content-body +============ + +*content-body* represents content of the +part. + +tm-view does not display raw content body. For example, if a content +has binary, it is hidden. If a content has text/enriched, it is +formated. Namely content body is hidden or formated. + +Function `mime-viewer/body-visible-p' is a judge function whether +content-body of a content is displayed. If it returns `nil', +content-body is hidden. In default, it returns non-`nil' when +content-type of a part is a member of variable +`mime-viewer/default-showing-Content-Type-list'. + +When content-body of a content is displayed, content-body is formated by +*content-filter*. Content-filter is +searched from variable `mime-viewer/content-filter-alist'. At this +time, major-mode of the raw-article-buffer (*Note raw-article-buffer::) +is used as the key. + +If it is not found, function `mime-viewer/default-content-filter' is +called. + + + -- Variable: mime-viewer/default-showing-Content-Type-list + + List of content-type. If content-type of a part is a member of + this variable, its body is displayed. + + + + -- Function: mime-viewer/body-visible-p RCNUM CINFO &optional CTYPE + + Return non-`nil', if content-type of a part is displayed. RCNUM is + reversed-content-number of a part. CINFO is content-info of the + message. If you know content-type of a part, you can specify it as + argument CTYPE. + + + + -- Variable: mime-viewer/content-filter-alist + + Association-list whose key is major-mode of a raw-article-buffer, + value is content-filter. + + + + -- Function: mime-viewer/default-content-filter RCNUM CINFO CTYPE PARAMS SUBJ + + It is called when content-body of a part should be displayed and + content-filter is not found in `mime-viewer/content-filter-alist'. + + In default, it does nothing. + + + + + +File: tm-view-en.info, Node: content-separator, Prev: content-body, Up: MIME display + +content-separator +================= + +*content-separator* is displayed to +represent boundary of contents. + +Content-separator is displayed by function +`mime-viewer/default-content-separator'. In default, it displays +line-break when content-header and content-body are not displayed. + +If you want to change this condition, please redefine this function. + + + -- Function: mime-viewer/default-content-separator RCNUM CINFO CTYPE PARAMS SUBJ + + Display content-separator. CNUM is content-number of a content. + CINFO is content-info of the message. CTYPE is content-type of a + content. PARAMS is Content-Type field parameters of a content. + SUBJ is subject. + + In default, it displays line-break when content-header and + content-body are not displayed. + + + + + +File: tm-view-en.info, Node: mime/viewer-mode, Next: method, Prev: MIME display, Up: Top + +Navigation in mime/viewer-mode +****************************** + +`mime/viewer-mode' has following functions: + +`u' + goes to the upper content (returns to the Summary mode if the + cursor is sitting on the top content (*1)) + +`p' + goes to the previous content + +`n' + goes to the next content + +`SPC' + scrolls up + +`M-SPC' + scrolls down + +`DEL' + scrolls down + +`RET' + goes to the next line + +`M-RET' + goes to the previous line + +`<' + goes to the beginning of message + +`>' + goes to the end of message + +`v' + playbacks a part (*2) + +`e' + extracts a file from a part (*2) + +`C-c C-p' + prints a part (*2) + +`f' + displays X-Face in the message + +`mouse-button-2' + drives mouse button in preview-buffer. + + For content-button, it playbacks a part (*2) + + For URL-button, it drives WWW browser + + +*[Notice]* + + (*1) Not return to the Summary mode unless tm-view has been setup + using tm-mh-e, tm-vm, gnus-mime, tm-gnus, tm-rmail etc. + + (*2) Actual playback/extract/print will be performed by a method. + + + + + +File: tm-view-en.info, Node: method, Next: Two buffers for an article, Prev: mime/viewer-mode, Up: Top + +Mechanism of decoding +********************* + +In `mime/viewer-mode', you can do play (`v'), extract +(`e'), or print (`C-c C-p') for each parts. These operations +are called *decoding +operation(s) (for a part)*. And kind of decoding operations are called +*decoding-mode*. + +When decoding operation is driven, tm-view calls a procedure matched for +the condition, such as content-type (*Note (tm-en)content-type::) of the +part or its environment. This procedure is called +*method*. + +There are two kinds of methods. One is Emacs Lisp function, called +*internal method*. Another one is +external program, called *external method*. + +Internal method operates in Emacs, so it can do carefully. + +External method is called as asynchronous process, so Emacs does not +wait while method is running. So it is good for big data, such as +audio, image or video. + + +* Menu: + +* decoding-condition:: Setting decoding condition for parts +* environment variables:: Environment variables + + + +File: tm-view-en.info, Node: decoding-condition, Next: environment variables, Prev: method, Up: method + +Setting decoding condition for parts +==================================== + +When decoding operation is driven, tm-view calls a method matched for +the condition searched from the variable +`mime/content-decoding-condition'. + +Variable `mime/content-decoding-condition' is defined as a list with the +following syntax: + + (condition_1 condition_2 ...) + +Each condition are association-list with the following syntax: + + ((field-type_1 . value_1) + (field-type_2 . value_2) + ...) + +For example, if you want to call the external method named tm-plain to +decode every text/plain (*Note (tm-en)text/plain::) type parts, you can +define the condition like: + + ((type . "text/plain") + (method "tm-plain" nil 'file 'type 'encoding 'mode 'name)) + +This condition definition will match all parts whose content-type (*Note +(tm-en)content-type::) are text/plain. Here is an another example: + + ((type . "text/plain") + (method "tm-plain" nil 'file 'type 'encoding 'mode 'name) + (mode . "play")) + +This will match the part whose type is text/plain and the mode is play. + +Here is an another example: + + ((method "metamail" t "-m" "tm" "-x" "-d" "-z" "-e" 'file) + (mode . "play")) + +This will match all parts which have a mode of play. + +The conditions defined in a variable `mime/content-decoding-condition' +are examined from top to bottom. The first matching condition becomes +valid and the method specified in that condition definition will be +executed. + + +* Menu: + +* method value:: Format of method value +* Example of decoding-condition:: + + + +File: tm-view-en.info, Node: method value, Next: Example of decoding-condition, Prev: decoding-condition, Up: decoding-condition + +Format of method value +---------------------- + +You can specify the method field of the decoding-condition definition in +two different ways, + + (method . SYMBOL) + +or + + (method STRING FLAG arg1 arg2 ...) + +can be accepted. + +When a symbol is specified in the method field, a function whose name is +SYMBOL will be called as an internal method. + +When a list is specified in the method field, it will be called as an +external method. + +The list below shows the meaning of the parameters when the external +method is specified in the method field. + +`STRING' + name of an external method + +`FLAG' + If `t', both the content-header and the content-body are passed to + an external method. + + If `nil', only the content-body is passed to an external method. + +`ARGUMENTs' + list of arguments passed to an external method + + +An argument passed to an external method can be in one of the following +formats: + +`STRING' + string itself + +`'SYMBOL' + value gotten using SYMBOL as a key from decoding-condition + +`'STRING' + value gotten using STRING as a key from decoding-condition + + +`'SYMBOL' can be one of the following: + +`'file' + name of a file holding the original content + +`'type' + content-type/sub-type of Content-Type field + +`'encoding' + field body of Content-Transfer-Encoding field + +`'mode' + decoding-mode + +`'name' + name of a file created by decode operation + + + +`'STRING' is used to search a parameter of the Content-Type field whose +name matches with it, and pass the value of that parameter to the +external method. + + + + +File: tm-view-en.info, Node: Example of decoding-condition, Prev: method value, Up: decoding-condition + +Example of decoding-condition +----------------------------- + +Following is an example of decoding-condition: + + (defvar mime/content-decoding-condition + '(((type . "text/plain") + (method "tm-plain" nil 'file 'type 'encoding 'mode 'name)) + ((type . "text/x-latex") + (method "tm-latex" nil 'file 'type 'encoding 'mode 'name)) + ((type . "audio/basic") + (method "tm-au" nil 'file 'type 'encoding 'mode 'name)) + ((type . "image/gif") + (method "tm-image" nil 'file 'type 'encoding 'mode 'name)) + ((type . "image/jpeg") + (method "tm-image" nil 'file 'type 'encoding 'mode 'name)) + ((type . "image/tiff") + (method "tm-image" nil 'file 'type 'encoding 'mode 'name)) + ((type . "image/x-tiff") + (method "tm-image" nil 'file 'type 'encoding 'mode 'name)) + ((type . "image/x-xbm") + (method "tm-image" nil 'file 'type 'encoding 'mode 'name)) + ((type . "image/x-pic") + (method "tm-image" nil 'file 'type 'encoding 'mode 'name)) + ((type . "video/mpeg")` + (method "tm-mpeg" nil 'file 'type 'encoding 'mode 'name)) + ((type . "application/octet-stream") + (method "tm-file" nil 'file 'type 'encoding 'mode 'name)) + ((type . "message/partial") + (method . mime/decode-message/partial-region)) + ((method "metamail" t + "-m" "tm" "-x" "-d" "-z" "-e" 'file)(mode . "play")) + )) + + +For example, if you want to use metamail to decode any contents, + + (setq mime/content-decoding-condition + '( + ((method "metamail" t "-m" "tm" "-x" "-d" "-z" "-e" 'file)) + )) + +will work. + +Variable `mime/content-decoding-condition' provides you of very flexible +way to define the conditions of decoding. It can be simple if you only +need the a few decoding methods, while it can be very complicated if you +want to use the separate decoding method for each type/mode combination. + +Following function may be useful to set decoding-condition. It is a +function of `tl-atype.el'. + + + -- Function: set-atype SYMBOL ALIST + + Add condition ALIST to SYMBOL. + + *[Example]* + + (set-atype 'mime/content-decoding-condition + '((type . "message/external-body") + ("access-type" . "anon-ftp") + (method . mime/decode-message/external-ftp) + )) + + + + + +File: tm-view-en.info, Node: environment variables, Prev: decoding-condition, Up: method + +Environment variables +===================== + +Standard methods of tm-view reference some environment variables. You +can specify them to customize. + +TM_TMP_DIR + Directory for temporary files or extracted files. If it is + omitted, `/tmp/' is used. + +VIDEO_DITHER + Dither for mpeg_play. If it is omitted, `gray' is used. + +TM_WWW_BROWSER + WWW browser name. If it is omitted, `netscape' is used. + + + + + + +File: tm-view-en.info, Node: Two buffers for an article, Next: API, Prev: method, Up: Top + +raw-article-buffer and preview-buffer +************************************* + +tm-view managements two buffers, one is for raw message called +*raw-article-buffer*, another one is +to preview for user called +*preview-buffer*. major-mode of +raw-article-buffer is same as major-mode for article of original MUA, +major-mode of preview-buffer is `mime/viewer-mode' (*Note +mime/viewer-mode::). + +When called `mime/viewer-mode', tm-view analyzes raw-article-buffer, and +sets its result to the variable `mime::article/content-info'. + +After that, tm-view create a preview-buffer corresponded to the +raw-article-buffer. As this time, tm-view modifies header and body of +each parts of the message by specified conditions. Filter program for +header is called *header-filter* +(*Note content-header::), filter program for body is called +*content-filter* (*Note content-body::), and +they are called *filter*. + +When preview-buffer is made, buffer local variable of preview-buffer +`mime::preview/content-list' is made to register structure of +preview-buffer. tm-view manages message by `mime::article/content-info' +in raw-article-buffer and `mime::preview/content-list' in +preview-buffer. + +*[Notice]* + In this document, I call "content-type" as content-type/subtype of + Content-Type field. + + + +* Menu: + +* raw-article-buffer:: buffer local variables of raw-article-buffer +* preview-buffer:: Buffer local variables of preview-buffer + + + +File: tm-view-en.info, Node: raw-article-buffer, Next: preview-buffer, Prev: Two buffers for an article, Up: Two buffers for an article + +buffer local variables of raw-article-buffer +============================================ + + -- Structure: mime::content-info RCNUM POINT-MIN POINT-MAX TYPE PARAMETERS ENCODING CHILDREN + + structure to represent MIME content in raw-article-buffer. It is + called by *content-info*. + + Please use reference function `mime::content-info/SLOT-NAME' to + reference slot of content-info. Their argument is only + content-info. + + Following is a list of slots of the structure: + + RCNUM + "reversed content-number" (list) + + POINT-MIN + beginning point of region in raw-article-buffer + + POINT-MAX + end point of region in raw-article-buffer + + TYPE + content-type/sub-type (string or nil) + + PARAMETERS + parameter of Content-Type field (association list) + + ENCODING + Content-Transfer-Encoding (string or nil) + + CHILDREN + parts included in this part (list of content-infos) + + + If a part includes other parts in its contents, such as multipart + or message/rfc822, content-infos of other parts are included in + CHILDREN, so content-info become a tree. + + + -- Variable: mime::article/content-info + + result of MIME parsing of raw-article-buffer (content-info) + + + -- Variable: mime::article/preview-buffer + + preview-buffer corresponded by this buffer + + + -- Function: mime-article/point-content-number POINT &optional CINFO + + In a region managed by content-info CINFO, it returns + content-number corresponded by POINT. + + If CINFO is omitted, `mime::article/content-info' is used as + default value. + + + -- Function: mime-article/rcnum-to-cinfo RCNUM &optional CINFO + + In a region managed by content-info CINFO, it returns content-info + corresponded by reversed-content-number RCNUM. + + If CINFO is omitted, `mime::article/content-info' is used as + default value. + + + -- Function: mime-article/cnum-to-cinfo RCNUM &optional CINFO + + In a region managed by content-info CINFO, it returns content-info + corresponded by content-number RCNUM. + + If CINFO is omitted, `mime::article/content-info' is used as + default value. + + + -- Function: mime/flatten-content-info &optional CINFO + + It returns flatten list of content-info from content-info CINFO + tree. + + If CINFO is omitted, `mime::article/content-info' is used as + default value. + + + + + +File: tm-view-en.info, Node: preview-buffer, Prev: raw-article-buffer, Up: Two buffers for an article + +Buffer local variables of preview-buffer +======================================== + + -- Variable: mime::preview/mother-buffer + + Mother buffer of this preview-buffer. + + + -- Structure: mime::preview-content-info POINT-MIN POINT-MAX BUFFER CONTENT-INFO + + structure to represent MIME content in preview-buffer. It is called by + *preview-content-info*. + + Please use reference function + `mime::preview-content-info/SLOT-NAME' to reference slot of + preview-content-info. Their argument is only preview-content-info. + + Following is a list of slots of the structure: + + POINT-MIN + beginning point of region in preview-buffer + + POINT-MAX + end point of region in preview-buffer + + BUFFER + raw-article-buffer corresponding a part + + CONTENT-INFO + content-info corresponding a part + + + + + -- Variable: mime::preview/content-list + + List of preview-content-info to represent structure of this + preview-buffer. + + + + -- Variable: mime::preview/article-buffer + + raw-article-buffer corresponded by this preview-buffer. + + + + -- Variable: mime::preview/original-major-mode + + major-mode of original buffer. + + + + -- Variable: mime::preview/original-window-configuration + + window-configuration just before made this preview-buffer. + + + + -- Function: mime-preview/point-pcinfo POINT &optional PCL + + In a region of preview-buffer managed by preview-content-info PCL, + it returns preview-content-info corresponded by POINT. + + If CINFO is omitted, `mime::preview/content-list' is used. + + + + + +File: tm-view-en.info, Node: API, Next: Concept Index, Prev: Two buffers for an article, Up: Top + +Functions to decode MIME message +******************************** + +tm-view provides some available functions to decode and navigate MIME +message to each MUA (*Note (tm-en)MUA::)s. + +There are 2 kinds of functions, one is for MIME preview, another one is +to decode RFC 1522 encoded-word (*Note (tm-en)encoded-word::). + + +* Menu: + +* API about MIME preview:: Function to preview MIME message +* encoded-word decoding:: encoded-word decoder + + + +File: tm-view-en.info, Node: API about MIME preview, Next: encoded-word decoding, Prev: API, Up: API + +Function to preview MIME message +================================ + + + -- Command: mime/viewer-mode &optional MOTHER CTL ENCODING IBUF OBUF MOTHER-KEYMAP + + Parse IBUF as a MIME message, and create preview-buffer into OBUF + to display to user, then enter `mime/viewer-mode' (*Note + mime/viewer-mode::). + + If IBUF is omitted, current buffer is used. + + MOTHER is used to specify original raw-article-buffer. It may be + useful when a raw-article-buffer is assembled from message/partial + messages. + + CTL is used to specify Content-Type field (*Note + (tm-en)Content-Type field::) information. Its format is output + format of `mime/Content-Type'. When CTL is specified, tm-view uses + it instead of Content-Type field of the raw-article-buffer. + + ENCODING is used to specify field-body of Content-Transfer-Encoding + field. When is is specified, tm-view uses it instead of + Content-Type field of the raw-article-buffer. + + If MOTHER-KEYMAP is specified, keymap of `mime/viewer-mode' + includes it. + + + + + +File: tm-view-en.info, Node: encoded-word decoding, Prev: API about MIME preview, Up: API + +encoded-word decoder +==================== + +tm-view has functions to decode RFC 1522 encoded-word (*Note +(tm-en)encoded-word::). + + + -- Command: mime/decode-message-header + + It decodes encoded-words in message header of current buffer. + + If an encoded-word is broken or invalid, or it has non supported + MIME charset (*Note (tm-en)MIME charset::), it is not decoded. + + + + -- Command: mime-eword/decode-region START END &optional UNFOLDING MUST-UNFOLD + + It decodes encoded-words in region START to END. + + If an encoded-word is broken or invalid, or it has non supported + MIME charset (*Note (tm-en)MIME charset::), it is not decoded. + + If UNFOLDING is non-nil, it unfolds folded fields. + + If MUST-FOLD is non-nil and decoded result of an encoded-word has + folding or raw CR or LF, it unfolds or delete raw CR or LF. + + + + -- Function: mime-eword/decode-string STRING &optional MUST-UNFOLD + + It decodes encoded-words in STRING and returns decoded string. + + If an encoded-word is broken or invalid, or it has non supported + MIME charset (*Note (tm-en)MIME charset::), it is not decoded. + + If STRING is folded, it unfolds STRING before decoding. + + If MUST-FOLD is non-nil and decoded result of an encoded-word has + folding or raw CR or LF, it unfolds or delete raw CR or LF. + + + + + +File: tm-view-en.info, Node: Concept Index, Next: Function Index, Prev: API, Up: Top + +Concept Index +************* + + +* Menu: + +* content-body: content-body. 5. +* content-filter: content-body. 19. +* content-filter: Two buffers for an article. 21. +* content-header-filter: content-header. 25. +* content-info: raw-article-buffer. 10. +* content-number: content-button. 15. +* content-separator: content-separator. 5. +* decoding operation(s) (for a part): method. 8. +* decoding-mode: method. 9. +* external method: method. 19. +* filter: Introduction. 17. +* filter: Two buffers for an article. 23. +* header-filter: Two buffers for an article. 20. +* internal method: method. 17. +* method: Introduction. 14. +* method: method. 14. +* preview-buffer: Two buffers for an article. 8. +* preview-content-info: preview-buffer. 14. +* raw-article-buffer: Two buffers for an article. 6. + + + +File: tm-view-en.info, Node: Function Index, Next: Variable Index, Prev: Concept Index, Up: Top + +Function Index +************** + + +* Menu: + +* mime-article/cnum-to-cinfo: raw-article-buffer. 73. +* mime-article/point-content-number: raw-article-buffer. 55. +* mime-article/rcnum-to-cinfo: raw-article-buffer. 64. +* mime::content-info: raw-article-buffer. 7. +* mime/decode-message-header: encoded-word decoding. 11. +* mime-eword/decode-region: encoded-word decoding. 20. +* mime-eword/decode-string: encoded-word decoding. 34. +* mime/flatten-content-info: raw-article-buffer. 82. +* mime::preview-content-info: preview-buffer. 12. +* mime-preview/point-pcinfo: preview-buffer. 63. +* mime-viewer/body-visible-p: content-body. 37. +* mime-viewer/default-content-filter: content-body. 53. +* mime-viewer/default-content-header-filter: content-header. 61. +* mime-viewer/default-content-separator: content-separator. 17. +* mime-viewer/header-visible-p: content-header. 45. +* mime/viewer-mode: API about MIME preview. 8. +* set-atype: Example of decoding-condition. 57. + + + +File: tm-view-en.info, Node: Variable Index, Prev: Function Index, Up: Top + +Variable Index +************** + + +* Menu: + +* mime::article/content-info: raw-article-buffer. 45. +* mime::article/preview-buffer: raw-article-buffer. 50. +* mime::preview/article-buffer: preview-buffer. 45. +* mime::preview/content-list: preview-buffer. 38. +* mime::preview/mother-buffer: preview-buffer. 7. +* mime::preview/original-major-mode: preview-buffer. 51. +* mime::preview/original-window-configuration: preview-buffer. 57. +* mime-viewer/childrens-header-showing-Content-Type-list: content-header. 34. +* mime-viewer/content-button-ignored-ctype-list: content-button. 50. +* mime-viewer/content-filter-alist: content-body. 46. +* mime-viewer/content-header-filter-alist: content-header. 54. +* mime-viewer/default-showing-Content-Type-list: content-body. 30. +* mime-viewer/ignored-field-list: content-header. 70. + +Tag table: +Node: Top162 +Node: Introduction883 +Node: MIME display1717 +Node: content-button4001 +Node: content-header5689 +Node: content-body8326 +Node: content-separator10238 +Node: mime/viewer-mode11101 +Node: method12253 +Node: decoding-condition13342 +Node: method value15115 +Node: Example of decoding-condition16825 +Node: environment variables19390 +Node: Two buffers for an article19896 +Node: raw-article-buffer21434 +Node: preview-buffer23971 +Node: API25642 +Node: API about MIME preview26189 +Node: encoded-word decoding27351 +Node: Concept Index28774 +Node: Function Index30062 +Node: Variable Index31244 + +End tag table diff --git a/doc/tm-view-en.sgml b/doc/tm-view-en.sgml new file mode 100644 index 0000000..24892b6 --- /dev/null +++ b/doc/tm-view-en.sgml @@ -0,0 +1,994 @@ +<!doctype sinfo system> +<!-- $Id: tm-view-en.sgml,v 1.1 1996/11/29 19:09:27 morioka Exp $ --> +<head> +<title>tm-view 7.77 Reference Manual (English Version) +<author>MORIOKA Tomohiko <mail>morioka@jaist.ac.jp</mail> +<date>1996/10/11 + +<toc> +</head> + +<body> + +<abstract> +<p> +This file documents tm-view, a MIME Viewer for GNU Emacs. +</abstract> + + +<h1> What is tm-view? +<node> Introduction +<p> +The tm-view is a general MIME viewer running on GNU Emacs. +<p> +tm-view provides the major-mode called <a +node="mime/viewer-mode"><code>mime/viewer-mode</code> </a> to read +MIME message for MUA. <a file="tm-en" node="MUA">MUA</a> implementer +can use it to add MIME function. +<p> +tm-view is a user interface kernel to view and navigate MIME message. +tm-view drives some programs to navigate each <dref +file="tm-en">content-type</dref>s, they are called <a +node="method"><concept>method</concept></a>. tm-view calls some +programs to display each contents and headers in preview buffer, they +are called <a node="Two buffers for an +article"><concept>filter</concept></a>. Method and filters are +tm-view application program. They expand tm-view to treat various +kinds of MIME types. + + +<h1> Structure of display in mime/viewer-mode +<node> MIME display +<p> +In <a node="mime/viewer-mode">mime/viewer-mode</a>, following are +displayed for each parts: +<p> +<verb> + [content-button] + (content-header) + + (content-body) + (content-separator) +</verb> +<p> +You can change design or stop to display if you specify for each +conditions, such as content-types. +<p> +Example: + +<verb> +From: morioka@jaist.ac.jp (MORIOKA Tomohiko) +Subject: Re: Question +Newsgroups: zxr.message.mime +Date: 22 Oct 93 11:02:44 +Mime-Version: 1.0 +Organization: Japan Advanced Institute of Science and Technology, + Ishikawa, Japan + +[1 (text/plain)] + How to compose MIME message in MIME-Edit mode. + + Press `C-c C-x ?' then help message will be displayed: + +C-c C-x C-t insert a text message. +C-c C-x TAB insert a (binary) file. +C-c C-x C-e insert a reference to external body. +C-c C-x C-v insert a voice message. +C-c C-x C-y insert a mail or news message. +C-c C-x RET insert a mail message. +C-c C-x C-s insert a signature file at end. +C-c C-x t insert a new MIME tag. +C-c C-x a enclose as multipart/alternative. +C-c C-x p enclose as multipart/parallel. +C-c C-x m enclose as multipart/mixed. +C-c C-x d enclose as multipart/digest. +C-c C-x s enclose as PGP signed. +C-c C-x e enclose as PGP encrypted. +C-c C-x C-k insert PGP public key. +C-c C-x C-p preview editing MIME message. +... + +So press `C-c C-x C-i' and specify file name you want to include. + + MIME encoding for binary file is normally Base64. + +[2 (image/gif)] + +[3 (text/plain)] + + In this way, it is finish a message attaching a picture. + +======================== A cup of Russian tea ======================== +============ * not by jam, not by marmalade, by honey * ============ +============ MORIOKA Tomohiko ============ +=============== Internet E-mail: <morioka@jaist.ac.jp> =============== +</verb> + + +<h2> content-button +<node> content-button +<p> +content-subject displays abstract for the part. It is placed in top +of the part. +<p> +In default, it is displayed following design: + +<verb> + [1.3 test (text/plain)] +</verb> + +<p> +First number field represents position of a content in the part. It +is called <concept>content-number</concept>. It can be considered as +the chapter number in the message. +<p> +Second string part represents title. It is created by following: + +<ol> +<li>name paramater or x-name parameter in <dref +file="tm-en">Content-Type field</dref> +</li> +<li><dref file="tm-en">Content-Description field</dref> or Subject +field +</li> +<li> filename of uuencode +</ol> + +<p> +If they are not exists, space is displayed. +<p> +Third parenthesis part represents content-type/subtype of the part. +If it is non-MIME part, <code>nil</code> is displayed. +<p> +Content-button is used like icon when <dref>content-header</dref> and +<dref>content-body</dref> are hidden. For example: + +<verb> + [2 (image/gif)] +</verb> + +<noindent> +if you press <kbd>v</kbd> key, GIF image is displayed. +<p> +If mouse operations are available, you can press content-button by +mouse button-2 (center button of 3 button-mouse) to play, similarly to +press <kbd>v</kbd> key. <cf node="mime/viewer-mode"> +<p> +By the way, it is annoying to display content-button if content-header +is displayed. So tm-view provides a mechanism to specify conditions +to display content-button. + + +<defvar name="mime-viewer/content-button-ignored-ctype-list"> +<p> +List of content-types. +<p> +If content-type of a part is a member of this list, its content-button +is not displayed. +</defvar> + + +<h2> content-header +<node> content-header +<p> +A content header displays the header portion of a part in the +preview-buffer. However it is annoying to display header for every +parts, so tm-view provides a mechanism to specify its condition. +<p> +When the function <code>mime-viewer/header-visible-p</code> returns +<code>t</code> for reversed-content-number of a part, content-header +is displayed. +<p> +This judge function returns <code>t</code> when a part is root or +content-type of its parent is a member of the variable +<code>mime-viewer/childrens-header-showing-Content-Type-list</code>. +<p> +If you want to change this condition, please redefine it. Notice that +it refers variable +<code>mime-viewer/childrens-header-showing-Content-Type-list</code>, +however if you redefine function +<code>mime-viewer/header-visible-p</code>, it may not work. So if you +want to redefine it, it should be refer variable +<code>mime-viewer/childrens-header-showing-Content-Type-list</code>. +<p> +When content-header is displayed, content-header are formated by the +program called by <concept>content-header-filter</concept>. +Content-header-filter is searched from variable +<code>mime-viewer/content-header-filter-alist</code>. Its key is +major-mode of the <a node="raw-article-buffer">raw-article-buffer</a>. +If not found, function +<code>mime-viewer/default-content-header-filter</code> is called. +<p> + +<defvar name="mime-viewer/childrens-header-showing-Content-Type-list"> +<p> +List of content-types. If content-type of parent of a part is a +member of this variable, its content-header is displayed. Default +value is <code>'("message/rfc822" "message/news")</code>. +<p> +This variable is referred by the function +<code>mime-viewer/header-visible-p</code>. +</defvar> + + +<defun name="mime-viewer/header-visible-p"> +<args> rcnum cinfo <opts> ctype +<p> +Returns <code>t</code> if a part which reversed-content-number is +<var>rcnum</var> in content-info <var>cinfo</var> is displayed. +<p> +If you know content-type, you can specify by <var>ctype</var>. +</defun> + + +<defvar name="mime-viewer/content-header-filter-alist"> +<p> +Association-list whose key is major-mode of a raw-article-buffer, +value is content-header-filter. +</defvar> + + +<defun name="mime-viewer/default-content-header-filter"> +<p> +It is called when content-header-filter is not found in variable +<code>mime-viewer/content-header-filter-alist</code>. +<p> +It refers <code>mime-viewer/ignored-field-regexp</code>. +</defun> + + +<defvar name="mime-viewer/ignored-field-list"> +<p> +List of regular expression to represent invisible fields even if +content-header is displayed. +<p> +Variable <code>mime-viewer/ignored-field-regexp</code> is created from +it. +<p> +Please use function <code>tm:add-fields</code> or +<code>tm:delete-fields</code> to set it. +</defvar> + + +<h2> content-body +<node> content-body +<p> +<concept>content-body</concept> represents content of the part. +<p> +tm-view does not display raw content body. For example, if a content +has binary, it is hidden. If a content has text/enriched, it is +formated. Namely content body is hidden or formated. +<p> +Function <code>mime-viewer/body-visible-p</code> is a judge function +whether content-body of a content is displayed. If it returns +<code>nil</code>, content-body is hidden. In default, it returns +non-<code>nil</code> when content-type of a part is a member of +variable <code>mime-viewer/default-showing-Content-Type-list</code>. +<p> +When content-body of a content is displayed, content-body is formated +by <concept>content-filter</concept>. Content-filter is searched from +variable <code>mime-viewer/content-filter-alist</code>. At this time, +major-mode of the <dref>raw-article-buffer</dref> is used as the key. + +If it is not found, function +<code>mime-viewer/default-content-filter</code> is called. + + +<defvar name="mime-viewer/default-showing-Content-Type-list"> +<p> +List of content-type. If content-type of a part is a member of this +variable, its body is displayed. +</defvar> + + +<defun name="mime-viewer/body-visible-p"> +<args> rcnum cinfo <opts> ctype +<p> +Return non-<code>nil</code>, if content-type of a part is displayed. +<var>rcnum</var> is reversed-content-number of a part. +<var>cinfo</var> is content-info of the message. If you know +content-type of a part, you can specify it as argument +<var>ctype</var>. +</defun> + + +<defvar name="mime-viewer/content-filter-alist"> +<p> +Association-list whose key is major-mode of a raw-article-buffer, +value is content-filter. +</defvar> + + +<defun name="mime-viewer/default-content-filter"> +<args> rcnum cinfo ctype params subj +<p> +It is called when content-body of a part should be displayed and +content-filter is not found in +<code>mime-viewer/content-filter-alist</code>. +<p> +In default, it does nothing. +</defun> + + +<h2> content-separator +<node> content-separator +<p> +<concept>content-separator</concept> is displayed to represent +boundary of contents. +<p> +Content-separator is displayed by function +<code>mime-viewer/default-content-separator</code>. In default, it +displays line-break when content-header and content-body are not +displayed. +<p> +If you want to change this condition, please redefine this function. + + +<defun name="mime-viewer/default-content-separator"> +<args> rcnum cinfo ctype params subj +<p> +Display content-separator. <var>cnum</var> is content-number of a +content. <var>cinfo</var> is content-info of the message. +<var>ctype</var> is content-type of a content. <var>params</var> is +Content-Type field parameters of a content. <var>subj</var> is +subject. +<p> +In default, it displays line-break when content-header and +content-body are not displayed. +</defun> + + +<h1> Navigation in mime/viewer-mode +<node> mime/viewer-mode +<p> +<code>mime/viewer-mode</code> has following functions: +<p> +<kl> +<kt>u +<kd> +goes to the upper content (returns to the Summary mode if the cursor +is sitting on the top content (*1)) +</kd> +<kt>p +<kd> +goes to the previous content +</kd> +<kt>n +<kd> +goes to the next content +</kd> +<kt>SPC +<kd> +scrolls up +</kd> +<kt>M-SPC +<kd> +scrolls down +</kd> +<kt>DEL +<kd> +scrolls down +</kd> +<kt>RET +<kd> +goes to the next line +</kd> +<kt>M-RET +<kd> +goes to the previous line +</kd> +<kt>< +<kd> +goes to the beginning of message +</kd> +<kt>> +<kd> +goes to the end of message +</kd> +<kt>v +<kd> +playbacks a part (*2) +</kd> +<kt>e +<kd> +extracts a file from a part (*2) +</kd> +<kt>C-c C-p +<kd> +prints a part (*2) +</kd> +<kt>f +<kd> +displays X-Face in the message +</kd> +<kt>mouse-button-2 +<kd> +drives mouse button in preview-buffer. +<p> +For content-button, it playbacks a part (*2) +<p> +For URL-button, it drives WWW browser +</kd> +</kl> +<p> +<memo title="Notice"> +<p> +(*1) Not return to the Summary mode unless tm-view has been setup +using tm-mh-e, tm-vm, gnus-mime, tm-gnus, tm-rmail etc. +<p> +(*2) Actual playback/extract/print will be performed by a method. +</memo> + + +<h1> Mechanism of decoding +<node> method +<p> +In <code>mime/viewer-mode</code>, you can do play (<kbd>v</kbd>), +extract (<kbd>e</kbd>), or print (<kbd>C-c C-p</kbd>) for each parts. +These operations are called <concept>decoding operation(s) (for a +part)</concept>. And kind of decoding operations are called +<concept>decoding-mode</concept>. +<p> +When decoding operation is driven, tm-view calls a procedure matched +for the condition, such as <dref file="tm-en">content-type</dref> of +the part or its environment. This procedure is called +<concept>method</concept>. +<p> +There are two kinds of methods. One is Emacs Lisp function, called +<concept>internal method</concept>. Another one is external program, +called <concept>external method</concept>. +<p> +Internal method operates in Emacs, so it can do carefully. +<p> +External method is called as asynchronous process, so Emacs does not +wait while method is running. So it is good for big data, such as +audio, image or video. + + +<h2> Setting decoding condition for parts +<node> decoding-condition +<p> +When decoding operation is driven, tm-view calls a method matched for +the condition searched from the variable +<code>mime/content-decoding-condition</code>. +<p> +Variable <code>mime/content-decoding-condition</code> is defined as a +list with the following syntax: +<p> +<lisp> + (condition_1 condition_2 ...) +</lisp> +<p> +Each condition are association-list with the following syntax: +<p> +<lisp> + ((field-type_1 . value_1) + (field-type_2 . value_2) + ...) +</lisp> +<p> +For example, if you want to call the external method named tm-plain to +decode every <dref file="tm-en">text/plain</dref> type parts, you can +define the condition like: +<p> +<lisp> + ((type . "text/plain") + (method "tm-plain" nil 'file 'type 'encoding 'mode 'name)) +</lisp> +<p> +This condition definition will match all parts whose <dref +file="tm-en">content-type</dref> are text/plain. Here is an another +example: +<p> +<lisp> + ((type . "text/plain") + (method "tm-plain" nil 'file 'type 'encoding 'mode 'name) + (mode . "play")) +</lisp> +<p> +This will match the part whose type is text/plain and the mode is +play. +<p> +Here is an another example: +<p> +<lisp> + ((method "metamail" t "-m" "tm" "-x" "-d" "-z" "-e" 'file) + (mode . "play")) +</lisp> +<p> +This will match all parts which have a mode of play. +<p> +The conditions defined in a variable +<code>mime/content-decoding-condition</code> are examined from top to +bottom. The first matching condition becomes valid and the method +specified in that condition definition will be executed. + + +<h3> Format of method value +<node> method value +<p> +You can specify the method field of the decoding-condition definition +in two different ways, +<p> +<lisp> + (method . SYMBOL) +</lisp> +<p> +<noindent> +or +<p> +<lisp> + (method STRING FLAG arg1 arg2 ...) +</lisp> +<p> +<noindent> +can be accepted. +<p> +When a symbol is specified in the method field, a function whose name +is SYMBOL will be called as an internal method. +<p> +When a list is specified in the method field, it will be called as an +external method. +<p> +The list below shows the meaning of the parameters when the external +method is specified in the method field. +<p> +<dl> +<dt>STRING +<dd>name of an external method +</dd> +<dt>FLAG +<dd>If <code>t</code>, both the content-header and the content-body +are passed to an external method. +<p> +If <code>nil</code>, only the content-body is passed to an external +method. +</dd> +<dt>ARGUMENTs +<dd>list of arguments passed to an external method +</dd> +</dl> +<p> +An argument passed to an external method can be in one of the +following formats: +<p> +<dl> +<dt>STRING +<dd>string itself +</dd> +<dt>'SYMBOL +<dd>value gotten using SYMBOL as a key from decoding-condition +</dd> +<dt>'STRING +<dd>value gotten using STRING as a key from decoding-condition +</dd> +</dl> +<p> +<code>'SYMBOL</code> can be one of the following: +<p> +<dl> +<dt>'file +<dd>name of a file holding the original content +</dd> +<dt>'type +<dd>content-type/sub-type of Content-Type field +</dd> +<dt>'encoding +<dd>field body of Content-Transfer-Encoding field +</dd> +<dt>'mode +<dd>decoding-mode +</dd> +<dt>'name +<dd>name of a file created by decode operation +</dd> +</dl> + +<p> +<code>'STRING</code> is used to search a parameter of the Content-Type +field whose name matches with it, and pass the value of that parameter +to the external method. + + +<h3> Example of decoding-condition +<node> Example of decoding-condition +<p> +Following is an example of decoding-condition: + +<lisp> +(defvar mime/content-decoding-condition + '(((type . "text/plain") + (method "tm-plain" nil 'file 'type 'encoding 'mode 'name)) + ((type . "text/x-latex") + (method "tm-latex" nil 'file 'type 'encoding 'mode 'name)) + ((type . "audio/basic") + (method "tm-au" nil 'file 'type 'encoding 'mode 'name)) + ((type . "image/gif") + (method "tm-image" nil 'file 'type 'encoding 'mode 'name)) + ((type . "image/jpeg") + (method "tm-image" nil 'file 'type 'encoding 'mode 'name)) + ((type . "image/tiff") + (method "tm-image" nil 'file 'type 'encoding 'mode 'name)) + ((type . "image/x-tiff") + (method "tm-image" nil 'file 'type 'encoding 'mode 'name)) + ((type . "image/x-xbm") + (method "tm-image" nil 'file 'type 'encoding 'mode 'name)) + ((type . "image/x-pic") + (method "tm-image" nil 'file 'type 'encoding 'mode 'name)) + ((type . "video/mpeg")` + (method "tm-mpeg" nil 'file 'type 'encoding 'mode 'name)) + ((type . "application/octet-stream") + (method "tm-file" nil 'file 'type 'encoding 'mode 'name)) + ((type . "message/partial") + (method . mime/decode-message/partial-region)) + ((method "metamail" t + "-m" "tm" "-x" "-d" "-z" "-e" 'file)(mode . "play")) + )) +</lisp> + +<p> +For example, if you want to use metamail to decode any contents, + +<lisp> +(setq mime/content-decoding-condition + '( + ((method "metamail" t "-m" "tm" "-x" "-d" "-z" "-e" 'file)) + )) +</lisp> + +<noindent> +will work. +<p> +Variable <code>mime/content-decoding-condition</code> provides you of +very flexible way to define the conditions of decoding. It can be +simple if you only need the a few decoding methods, while it can be +very complicated if you want to use the separate decoding method for +each type/mode combination. +<p> +Following function may be useful to set decoding-condition. It is a +function of <file>tl-atype.el</file>. + + +<defun name="set-atype"> +<args> symbol alist +<p> +Add condition <var>alist</var> to <var>symbol</var>. + +<memo title="Example"> +<p> +<lisp> +(set-atype 'mime/content-decoding-condition + '((type . "message/external-body") + ("access-type" . "anon-ftp") + (method . mime/decode-message/external-ftp) + )) +</lisp> +</memo> +</defun> + + +<h2> Environment variables +<node> environment variables +<p> +Standard methods of tm-view reference some environment variables. You +can specify them to customize. + +<vl> +<dt>TM_TMP_DIR +<dd> +Directory for temporary files or extracted files. If it is omitted, +<file>/tmp/</file> is used. +</dd> +<dt>VIDEO_DITHER +<dd> +Dither for mpeg_play. If it is omitted, `gray' is used. +</dd> +<dt>TM_WWW_BROWSER +<dd> +WWW browser name. If it is omitted, `netscape' is used. +</vl> + + +<h1> raw-article-buffer and preview-buffer +<node> Two buffers for an article +<p> +tm-view managements two buffers, one is for raw message called +<concept>raw-article-buffer</concept>, another one is to preview for +user called <concept>preview-buffer</concept>. major-mode of +raw-article-buffer is same as major-mode for article of original MUA, +major-mode of preview-buffer is <a +node="mime/viewer-mode"><code>mime/viewer-mode</code></a>. +<p> +When called <code>mime/viewer-mode</code>, tm-view analyzes +raw-article-buffer, and sets its result to the variable +<code>mime::article/content-info</code>. +<p> +After that, tm-view create a preview-buffer corresponded to the +raw-article-buffer. As this time, tm-view modifies header and body of +each parts of the message by specified conditions. Filter program for +header is called <a +node="content-header"><concept>header-filter</concept></a>, filter +program for body is called <a +node="content-body"><concept>content-filter</concept></a>, and they +are called <concept>filter</concept>. +<p> +When preview-buffer is made, buffer local variable of preview-buffer +<code>mime::preview/content-list</code> is made to register structure +of preview-buffer. tm-view manages message by +<code>mime::article/content-info</code> in raw-article-buffer and +<code>mime::preview/content-list</code> in preview-buffer. +<p> +<memo title="Notice"> +In this document, I call ``content-type'' as content-type/subtype of +Content-Type field. +</memo> + + +<h2> buffer local variables of raw-article-buffer +<node> raw-article-buffer +<p> +<define type="Structure" name="mime::content-info"> +<args> rcnum point-min point-max type parameters encoding children +<p> +structure to represent MIME content in raw-article-buffer. It is +called by <concept>content-info</concept>. +<p> +Please use reference function +<code>mime::content-info/SLOT-NAME</code> to reference slot of +content-info. Their argument is only content-info. +<p> +Following is a list of slots of the structure: + +<vl> +<dt>rcnum<dd>``reversed content-number'' (list) +</dd> +<dt>point-min<dd>beginning point of region in raw-article-buffer +</dd> +<dt>point-max<dd>end point of region in raw-article-buffer +</dd> +<dt>type<dd>content-type/sub-type (string or nil) +</dd> +<dt>parameters<dd>parameter of Content-Type field (association list) +</dd> +<dt>encoding<dd>Content-Transfer-Encoding (string or nil) +</dd> +<dt>children<dd>parts included in this part (list of content-infos) +</dd> +</vl> +<p> +If a part includes other parts in its contents, such as multipart or +message/rfc822, content-infos of other parts are included in +<var>children</var>, so content-info become a tree. +</define> + +<defvar name="mime::article/content-info"> +<p> +result of MIME parsing of raw-article-buffer (content-info) +</defvar> + +<defvar name="mime::article/preview-buffer"> +<p> +preview-buffer corresponded by this buffer +</defvar> + +<defun name="mime-article/point-content-number"> +<args> point <opts> cinfo +<p> +In a region managed by content-info <var>cinfo</var>, it returns +content-number corresponded by <var>point</var>. +<p> +If <var>cinfo</var> is omitted, +<code>mime::article/content-info</code> is used as default value. +</defun> + +<defun name="mime-article/rcnum-to-cinfo"> +<args> rcnum <opts> cinfo +<p> +In a region managed by content-info <var>cinfo</var>, it returns +content-info corresponded by reversed-content-number <var>rcnum</var>. +<p> +If <var>cinfo</var> is omitted, +<code>mime::article/content-info</code> is used as default value. +</defun> + +<defun name="mime-article/cnum-to-cinfo"> +<args> rcnum <opts> cinfo +<p> +In a region managed by content-info <var>cinfo</var>, it returns +content-info corresponded by content-number <var>rcnum</var>. +<p> +If <var>cinfo</var> is omitted, +<code>mime::article/content-info</code> is used as default value. +</defun> + +<defun name="mime/flatten-content-info"> +<args> <opts> cinfo +<p> +It returns flatten list of content-info from content-info +<var>cinfo</var> tree. +<p> +If <var>cinfo</var> is omitted, +<code>mime::article/content-info</code> is used as default value. +</defun> + + +<h2> Buffer local variables of preview-buffer +<node> preview-buffer +<p> +<defvar name="mime::preview/mother-buffer"> +<p> +Mother buffer of this preview-buffer. +</defvar> + +<define type="Structure" name="mime::preview-content-info"> +<args> point-min point-max buffer content-info +<p> +structure to represent MIME content in preview-buffer. It is called +by <concept>preview-content-info</concept>. +<p> +Please use reference function +<code>mime::preview-content-info/SLOT-NAME</code> to reference slot of +preview-content-info. Their argument is only preview-content-info. +<p> +Following is a list of slots of the structure: + +<vl> +<dt>point-min<dd>beginning point of region in preview-buffer +</dd> +<dt> point-max<dd>end point of region in preview-buffer +</dd> +<dt>buffer<dd>raw-article-buffer corresponding a part +</dd> +<dt>content-info<dd>content-info corresponding a part +</dd> +</vl> +</define> + + +<defvar name="mime::preview/content-list"> +<p> +List of preview-content-info to represent structure of this +preview-buffer. +</defvar> + + +<defvar name="mime::preview/article-buffer"> +<p> +raw-article-buffer corresponded by this preview-buffer. +</defvar> + + +<defvar name="mime::preview/original-major-mode"> +<p> +major-mode of original buffer. +</defvar> + + +<defvar name="mime::preview/original-window-configuration"> +<p> +window-configuration just before made this preview-buffer. +</defvar> + + +<defun name="mime-preview/point-pcinfo"> +<args> point <opts> pcl +<p> +In a region of preview-buffer managed by preview-content-info +<var>pcl</var>, it returns preview-content-info corresponded by +<var>point</var>. +<p> +If <var>cinfo</var> is omitted, +<code>mime::preview/content-list</code> is used. +</defun> + + +<h1> Functions to decode MIME message +<node> API +<p> +tm-view provides some available functions to decode and navigate MIME +message to each <a file="tm-en" node="MUA">MUA</a>s. +<p> +There are 2 kinds of functions, one is for MIME preview, another one +is to decode RFC 1522 <dref file="tm-en">encoded-word</dref>. + + +<h2> Function to preview MIME message +<node> API about MIME preview +<p> + +<define type="Command" name="mime/viewer-mode"> +<opts> mother ctl encoding ibuf obuf mother-keymap +<p> +Parse <var>ibuf</var> as a MIME message, and create preview-buffer +into <var>obuf</var> to display to user, then enter <a +node="mime/viewer-mode"><code>mime/viewer-mode</code></a>. +<p> +If <var>ibuf</var> is omitted, current buffer is used. +<p> +<var>mother</var> is used to specify original raw-article-buffer. It +may be useful when a raw-article-buffer is assembled from +message/partial messages. +<p> +<var>ctl</var> is used to specify <dref file="tm-en">Content-Type +field</dref> information. Its format is output format of +<code>mime/Content-Type</code>. When <var>ctl</var> is specified, +tm-view uses it instead of Content-Type field of the +raw-article-buffer. +<p> +<var>encoding</var> is used to specify field-body of +Content-Transfer-Encoding field. When is is specified, tm-view uses +it instead of Content-Type field of the raw-article-buffer. +<p> +If <var>mother-keymap</var> is specified, keymap of +<code>mime/viewer-mode</code> includes it. +</define> + + +<h2> encoded-word decoder +<node> encoded-word decoding +<p> +tm-view has functions to decode RFC 1522 <dref +file="tm-en">encoded-word</dref>. + + +<define type="Command" name="mime/decode-message-header"> +<p> +It decodes encoded-words in message header of current buffer. +<p> +If an encoded-word is broken or invalid, or it has non supported <a +file="tm-en" node="MIME charset">MIME charset</a>, it is not decoded. +</define> + + +<define type="Command" name="mime-eword/decode-region"> +<args> start end <opts> unfolding must-unfold +<p> +It decodes encoded-words in region <var>start</var> to <var>end</var>. +<p> +If an encoded-word is broken or invalid, or it has non supported <a +file="tm-en" node="MIME charset">MIME charset</a>, it is not decoded. +<p> +If <var>unfolding</var> is non-nil, it unfolds folded fields. +<p> +If <var>must-fold</var> is non-nil and decoded result of an +encoded-word has folding or raw CR or LF, it unfolds or delete raw CR +or LF. +</define> + + +<defun name="mime-eword/decode-string"> +<args> string <opts> must-unfold +<p> +It decodes encoded-words in <var>string</var> and returns decoded +string. +<p> +If an encoded-word is broken or invalid, or it has non supported <a +file="tm-en" node="MIME charset">MIME charset</a>, it is not decoded. +<p> +If <var>string</var> is folded, it unfolds <var>string</var> before +decoding. +<p> +If <var>must-fold</var> is non-nil and decoded result of an +encoded-word has folding or raw CR or LF, it unfolds or delete raw CR +or LF. +</defun> + + +<h1> Concept Index +<node> Concept Index + +<cindex> + + +<h1> Function Index +<node> Function Index + +<findex> + + +<h1> Variable Index +<node> Variable Index + +<vindex> + +</body> diff --git a/doc/tm-view-en.texi b/doc/tm-view-en.texi new file mode 100644 index 0000000..79d3f8b --- /dev/null +++ b/doc/tm-view-en.texi @@ -0,0 +1,1045 @@ +\input texinfo.tex +@setfilename tm-view-en.info +@settitle{tm-view 7.77 Reference Manual (English Version)} +@titlepage +@title tm-view 7.77 Reference Manual (English Version) +@author MORIOKA Tomohiko <morioka@@jaist.ac.jp> +@subtitle 1996/10/11 +@end titlepage +@node Top, Introduction, (dir), (dir) +@top tm-view 7.77 Reference Manual (English Version) + +@ifinfo + +This file documents tm-view, a MIME Viewer for GNU Emacs. +@end ifinfo + +@menu +* Introduction:: What is tm-view? +* MIME display:: Structure of display in mime/viewer-mode +* mime/viewer-mode:: Navigation in mime/viewer-mode +* method:: Mechanism of decoding +* Two buffers for an article:: raw-article-buffer and preview-buffer +* API:: Functions to decode MIME message +* Concept Index:: +* Function Index:: +* Variable Index:: +@end menu + +@node Introduction, MIME display, Top, Top +@chapter What is tm-view? + +The tm-view is a general MIME viewer running on GNU Emacs.@refill + +tm-view provides the major-mode called @code{mime/viewer-mode} +(@ref{mime/viewer-mode}) to read MIME message for MUA. MUA +(@ref{(tm-en)MUA}) implementer can use it to add MIME function.@refill + +tm-view is a user interface kernel to view and navigate MIME message. +tm-view drives some programs to navigate each content-type +(@ref{(tm-en)content-type})s, they are called +@cindex{method}@strong{method} (@ref{method}). tm-view calls some +programs to display each contents and headers in preview buffer, they +are called @cindex{filter}@strong{filter} (@ref{Two buffers for an +article}). Method and filters are tm-view application program. They +expand tm-view to treat various kinds of MIME types. + + +@node MIME display, mime/viewer-mode, Introduction, Top +@chapter Structure of display in mime/viewer-mode + +In mime/viewer-mode (@ref{mime/viewer-mode}), following are displayed +for each parts:@refill + +@example + [content-button] + (content-header) + + (content-body) + (content-separator) +@end example + +You can change design or stop to display if you specify for each +conditions, such as content-types.@refill + +Example: + +@example +From: morioka@@jaist.ac.jp (MORIOKA Tomohiko) +Subject: Re: Question +Newsgroups: zxr.message.mime +Date: 22 Oct 93 11:02:44 +Mime-Version: 1.0 +Organization: Japan Advanced Institute of Science and Technology, + Ishikawa, Japan + +[1 (text/plain)] + How to compose MIME message in MIME-Edit mode. + + Press `C-c C-x ?' then help message will be displayed: + +C-c C-x C-t insert a text message. +C-c C-x TAB insert a (binary) file. +C-c C-x C-e insert a reference to external body. +C-c C-x C-v insert a voice message. +C-c C-x C-y insert a mail or news message. +C-c C-x RET insert a mail message. +C-c C-x C-s insert a signature file at end. +C-c C-x t insert a new MIME tag. +C-c C-x a enclose as multipart/alternative. +C-c C-x p enclose as multipart/parallel. +C-c C-x m enclose as multipart/mixed. +C-c C-x d enclose as multipart/digest. +C-c C-x s enclose as PGP signed. +C-c C-x e enclose as PGP encrypted. +C-c C-x C-k insert PGP public key. +C-c C-x C-p preview editing MIME message. +... + +So press `C-c C-x C-i' and specify file name you want to include. + + MIME encoding for binary file is normally Base64. + +[2 (image/gif)] + +[3 (text/plain)] + + In this way, it is finish a message attaching a picture. + +======================== A cup of Russian tea ======================== +============ * not by jam, not by marmalade, by honey * ============ +============ MORIOKA Tomohiko ============ +=============== Internet E-mail: <morioka@@jaist.ac.jp> =============== +@end example + + + +@menu +* content-button:: +* content-header:: +* content-body:: +* content-separator:: +@end menu + +@node content-button, content-header, MIME display, MIME display +@section content-button + +content-subject displays abstract for the part. It is placed in top of +the part.@refill + +In default, it is displayed following design: + +@example + [1.3 test (text/plain)] +@end example + + +First number field represents position of a content in the part. It is +called @cindex{content-number}@strong{content-number}. It can be +considered as the chapter number in the message.@refill + +Second string part represents title. It is created by following: + +@enumerate +@item +name paramater or x-name parameter in Content-Type field +(@ref{(tm-en)Content-Type field}) +@item +Content-Description field (@ref{(tm-en)Content-Description field}) or +Subject field +@item + filename of uuencode +@end enumerate + + +If they are not exists, space is displayed.@refill + +Third parenthesis part represents content-type/subtype of the part. If +it is non-MIME part, @code{nil} is displayed.@refill + +Content-button is used like icon when content-header +(@ref{content-header}) and content-body (@ref{content-body}) are hidden. +For example: + +@example + [2 (image/gif)] +@end example + +@noindent +if you press @kbd{v} key, GIF image is displayed. + +If mouse operations are available, you can press content-button by mouse +button-2 (center button of 3 button-mouse) to play, similarly to press +@kbd{v} key. (cf. @ref{mime/viewer-mode}) @refill + +By the way, it is annoying to display content-button if content-header +is displayed. So tm-view provides a mechanism to specify conditions +to display content-button. + + +@defvar mime-viewer/content-button-ignored-ctype-list + +List of content-types.@refill + +If content-type of a part is a member of this list, its content-button +is not displayed. +@end defvar + + + +@node content-header, content-body, content-button, MIME display +@section content-header + +A content header displays the header portion of a part in the +preview-buffer. However it is annoying to display header for every +parts, so tm-view provides a mechanism to specify its condition.@refill + +When the function @code{mime-viewer/header-visible-p} returns @code{t} +for reversed-content-number of a part, content-header is +displayed.@refill + +This judge function returns @code{t} when a part is root or content-type +of its parent is a member of the variable +@code{mime-viewer/childrens-header-showing-Content-Type-list}.@refill + +If you want to change this condition, please redefine it. Notice that +it refers variable +@code{mime-viewer/childrens-header-showing-Content-Type-list}, however +if you redefine function @code{mime-viewer/header-visible-p}, it may not +work. So if you want to redefine it, it should be refer variable +@code{mime-viewer/childrens-header-showing-Content-Type-list}.@refill + +When content-header is displayed, content-header are formated by the +program called by +@cindex{content-header-filter}@strong{content-header-filter}. +Content-header-filter is searched from variable +@code{mime-viewer/content-header-filter-alist}. Its key is major-mode +of the raw-article-buffer (@ref{raw-article-buffer}). If not found, +function @code{mime-viewer/default-content-header-filter} is +called.@refill + + +@defvar mime-viewer/childrens-header-showing-Content-Type-list + +List of content-types. If content-type of parent of a part is a member +of this variable, its content-header is displayed. Default value is +@code{'("message/rfc822" "message/news")}.@refill + +This variable is referred by the function +@code{mime-viewer/header-visible-p}. +@end defvar + + + +@defun mime-viewer/header-visible-p rcnum cinfo &optional ctype + +Returns @code{t} if a part which reversed-content-number is @var{rcnum} +in content-info @var{cinfo} is displayed.@refill + +If you know content-type, you can specify by @var{ctype}. +@end defun + + + +@defvar mime-viewer/content-header-filter-alist + +Association-list whose key is major-mode of a raw-article-buffer, value +is content-header-filter. +@end defvar + + + +@defun mime-viewer/default-content-header-filter + +It is called when content-header-filter is not found in variable +@code{mime-viewer/content-header-filter-alist}.@refill + +It refers @code{mime-viewer/ignored-field-regexp}. +@end defun + + + +@defvar mime-viewer/ignored-field-list + +List of regular expression to represent invisible fields even if +content-header is displayed.@refill + +Variable @code{mime-viewer/ignored-field-regexp} is created from +it.@refill + +Please use function @code{tm:add-fields} or @code{tm:delete-fields} to +set it. +@end defvar + + + +@node content-body, content-separator, content-header, MIME display +@section content-body + +@cindex{content-body}@strong{content-body} represents content of the +part.@refill + +tm-view does not display raw content body. For example, if a content +has binary, it is hidden. If a content has text/enriched, it is +formated. Namely content body is hidden or formated.@refill + +Function @code{mime-viewer/body-visible-p} is a judge function whether +content-body of a content is displayed. If it returns @code{nil}, +content-body is hidden. In default, it returns non-@code{nil} when +content-type of a part is a member of variable +@code{mime-viewer/default-showing-Content-Type-list}.@refill + +When content-body of a content is displayed, content-body is formated by +@cindex{content-filter}@strong{content-filter}. Content-filter is +searched from variable @code{mime-viewer/content-filter-alist}. At this +time, major-mode of the raw-article-buffer (@ref{raw-article-buffer}) is +used as the key. + +If it is not found, function +@code{mime-viewer/default-content-filter} is called. + + +@defvar mime-viewer/default-showing-Content-Type-list + +List of content-type. If content-type of a part is a member of this +variable, its body is displayed. +@end defvar + + + +@defun mime-viewer/body-visible-p rcnum cinfo &optional ctype + +Return non-@code{nil}, if content-type of a part is displayed. +@var{rcnum} is reversed-content-number of a part. @var{cinfo} is +content-info of the message. If you know content-type of a part, you +can specify it as argument @var{ctype}. +@end defun + + + +@defvar mime-viewer/content-filter-alist + +Association-list whose key is major-mode of a raw-article-buffer, value +is content-filter. +@end defvar + + + +@defun mime-viewer/default-content-filter rcnum cinfo ctype params subj + +It is called when content-body of a part should be displayed and +content-filter is not found in +@code{mime-viewer/content-filter-alist}.@refill + +In default, it does nothing. +@end defun + + + +@node content-separator, , content-body, MIME display +@section content-separator + +@cindex{content-separator}@strong{content-separator} is displayed to +represent boundary of contents.@refill + +Content-separator is displayed by function +@code{mime-viewer/default-content-separator}. In default, it displays +line-break when content-header and content-body are not +displayed.@refill + +If you want to change this condition, please redefine this function. + + +@defun mime-viewer/default-content-separator rcnum cinfo ctype params subj + +Display content-separator. @var{cnum} is content-number of a content. +@var{cinfo} is content-info of the message. @var{ctype} is content-type +of a content. @var{params} is Content-Type field parameters of a +content. @var{subj} is subject.@refill + +In default, it displays line-break when content-header and content-body +are not displayed. +@end defun + + + +@node mime/viewer-mode, method, MIME display, Top +@chapter Navigation in mime/viewer-mode + +@code{mime/viewer-mode} has following functions:@refill + +@table @kbd +@item @key{u} +goes to the upper content (returns to the Summary mode if the cursor +is sitting on the top content (*1)) + +@item @key{p} +goes to the previous content + +@item @key{n} +goes to the next content + +@item @key{SPC} +scrolls up + +@item @key{M-SPC} +scrolls down + +@item @key{DEL} +scrolls down + +@item @key{RET} +goes to the next line + +@item @key{M-RET} +goes to the previous line + +@item @key{<} +goes to the beginning of message + +@item @key{>} +goes to the end of message + +@item @key{v} +playbacks a part (*2) + +@item @key{e} +extracts a file from a part (*2) + +@item @key{C-c C-p} +prints a part (*2) + +@item @key{f} +displays X-Face in the message + +@item @key{mouse-button-2} +drives mouse button in preview-buffer. + +For content-button, it playbacks a part (*2)@refill + +For URL-button, it drives WWW browser@refill + +@end table + +@noindent +@strong{[Notice]} +@quotation + +(*1) Not return to the Summary mode unless tm-view has been setup using +tm-mh-e, tm-vm, gnus-mime, tm-gnus, tm-rmail etc.@refill + +(*2) Actual playback/extract/print will be performed by a method. +@end quotation + + + +@node method, Two buffers for an article, mime/viewer-mode, Top +@chapter Mechanism of decoding + +In @code{mime/viewer-mode}, you can do play (@kbd{v}), extract +(@kbd{e}), or print (@kbd{C-c C-p}) for each parts. These operations +are called @cindex{decoding operation(s) (for a part)}@strong{decoding +operation(s) (for a part)}. And kind of decoding operations are called +@cindex{decoding-mode}@strong{decoding-mode}.@refill + +When decoding operation is driven, tm-view calls a procedure matched for +the condition, such as content-type (@ref{(tm-en)content-type}) of the +part or its environment. This procedure is called +@cindex{method}@strong{method}.@refill + +There are two kinds of methods. One is Emacs Lisp function, called +@cindex{internal method}@strong{internal method}. Another one is +external program, called @cindex{external method}@strong{external +method}.@refill + +Internal method operates in Emacs, so it can do carefully.@refill + +External method is called as asynchronous process, so Emacs does not +wait while method is running. So it is good for big data, such as +audio, image or video. + + +@menu +* decoding-condition:: Setting decoding condition for parts +* environment variables:: Environment variables +@end menu + +@node decoding-condition, environment variables, method, method +@section Setting decoding condition for parts + +When decoding operation is driven, tm-view calls a method matched for +the condition searched from the variable +@code{mime/content-decoding-condition}.@refill + +Variable @code{mime/content-decoding-condition} is defined as a list +with the following syntax:@refill + +@lisp + (condition_1 condition_2 ...) +@end lisp + +Each condition are association-list with the following syntax:@refill + +@lisp + ((field-type_1 . value_1) + (field-type_2 . value_2) + ...) +@end lisp + +For example, if you want to call the external method named tm-plain to +decode every text/plain (@ref{(tm-en)text/plain}) type parts, you can +define the condition like:@refill + +@lisp + ((type . "text/plain") + (method "tm-plain" nil 'file 'type 'encoding 'mode 'name)) +@end lisp + +This condition definition will match all parts whose content-type +(@ref{(tm-en)content-type}) are text/plain. Here is an another +example:@refill + +@lisp + ((type . "text/plain") + (method "tm-plain" nil 'file 'type 'encoding 'mode 'name) + (mode . "play")) +@end lisp + +This will match the part whose type is text/plain and the mode is +play.@refill + +Here is an another example:@refill + +@lisp + ((method "metamail" t "-m" "tm" "-x" "-d" "-z" "-e" 'file) + (mode . "play")) +@end lisp + +This will match all parts which have a mode of play.@refill + +The conditions defined in a variable +@code{mime/content-decoding-condition} are examined from top to +bottom. The first matching condition becomes valid and the method +specified in that condition definition will be executed. + + +@menu +* method value:: Format of method value +* Example of decoding-condition:: +@end menu + +@node method value, Example of decoding-condition, decoding-condition, decoding-condition +@subsection Format of method value + +You can specify the method field of the decoding-condition definition in +two different ways,@refill + +@lisp + (method . SYMBOL) +@end lisp + +@noindent +or + +@lisp + (method STRING FLAG arg1 arg2 ...) +@end lisp + +@noindent +can be accepted. + +When a symbol is specified in the method field, a function whose name is +SYMBOL will be called as an internal method.@refill + +When a list is specified in the method field, it will be called as an +external method.@refill + +The list below shows the meaning of the parameters when the external +method is specified in the method field.@refill + +@table @samp +@item STRING +name of an external method + +@item FLAG +If @code{t}, both the content-header and the content-body +are passed to an external method. + +If @code{nil}, only the content-body is passed to an external +method.@refill + +@item ARGUMENTs +list of arguments passed to an external method + +@end table + +An argument passed to an external method can be in one of the following +formats:@refill + +@table @samp +@item STRING +string itself + +@item 'SYMBOL +value gotten using SYMBOL as a key from decoding-condition + +@item 'STRING +value gotten using STRING as a key from decoding-condition + +@end table + +@code{'SYMBOL} can be one of the following:@refill + +@table @samp +@item 'file +name of a file holding the original content + +@item 'type +content-type/sub-type of Content-Type field + +@item 'encoding +field body of Content-Transfer-Encoding field + +@item 'mode +decoding-mode + +@item 'name +name of a file created by decode operation + +@end table + + +@code{'STRING} is used to search a parameter of the Content-Type +field whose name matches with it, and pass the value of that parameter +to the external method. + + +@node Example of decoding-condition, , method value, decoding-condition +@subsection Example of decoding-condition + +Following is an example of decoding-condition: + +@lisp +(defvar mime/content-decoding-condition + '(((type . "text/plain") + (method "tm-plain" nil 'file 'type 'encoding 'mode 'name)) + ((type . "text/x-latex") + (method "tm-latex" nil 'file 'type 'encoding 'mode 'name)) + ((type . "audio/basic") + (method "tm-au" nil 'file 'type 'encoding 'mode 'name)) + ((type . "image/gif") + (method "tm-image" nil 'file 'type 'encoding 'mode 'name)) + ((type . "image/jpeg") + (method "tm-image" nil 'file 'type 'encoding 'mode 'name)) + ((type . "image/tiff") + (method "tm-image" nil 'file 'type 'encoding 'mode 'name)) + ((type . "image/x-tiff") + (method "tm-image" nil 'file 'type 'encoding 'mode 'name)) + ((type . "image/x-xbm") + (method "tm-image" nil 'file 'type 'encoding 'mode 'name)) + ((type . "image/x-pic") + (method "tm-image" nil 'file 'type 'encoding 'mode 'name)) + ((type . "video/mpeg")` + (method "tm-mpeg" nil 'file 'type 'encoding 'mode 'name)) + ((type . "application/octet-stream") + (method "tm-file" nil 'file 'type 'encoding 'mode 'name)) + ((type . "message/partial") + (method . mime/decode-message/partial-region)) + ((method "metamail" t + "-m" "tm" "-x" "-d" "-z" "-e" 'file)(mode . "play")) + )) +@end lisp + + +For example, if you want to use metamail to decode any contents, + +@lisp +(setq mime/content-decoding-condition + '( + ((method "metamail" t "-m" "tm" "-x" "-d" "-z" "-e" 'file)) + )) +@end lisp + +@noindent +will work. + +Variable @code{mime/content-decoding-condition} provides you of very +flexible way to define the conditions of decoding. It can be simple if +you only need the a few decoding methods, while it can be very +complicated if you want to use the separate decoding method for each +type/mode combination.@refill + +Following function may be useful to set decoding-condition. It is a +function of @file{tl-atype.el}. + + +@defun set-atype symbol alist + +Add condition @var{alist} to @var{symbol}. + +@noindent +@strong{[Example]} +@quotation + +@lisp +(set-atype 'mime/content-decoding-condition + '((type . "message/external-body") + ("access-type" . "anon-ftp") + (method . mime/decode-message/external-ftp) + )) +@end lisp +@end quotation +@end defun + + + +@node environment variables, , decoding-condition, method +@section Environment variables + +Standard methods of tm-view reference some environment variables. You +can specify them to customize. + +@table @var +@item TM_TMP_DIR +Directory for temporary files or extracted files. If it is omitted, +@file{/tmp/} is used. + +@item VIDEO_DITHER +Dither for mpeg_play. If it is omitted, `gray' is used. + +@item TM_WWW_BROWSER +WWW browser name. If it is omitted, `netscape' is used. + +@end table + + + +@node Two buffers for an article, API, method, Top +@chapter raw-article-buffer and preview-buffer + +tm-view managements two buffers, one is for raw message called +@cindex{raw-article-buffer}@strong{raw-article-buffer}, another one is +to preview for user called +@cindex{preview-buffer}@strong{preview-buffer}. major-mode of +raw-article-buffer is same as major-mode for article of original MUA, +major-mode of preview-buffer is @code{mime/viewer-mode} +(@ref{mime/viewer-mode}).@refill + +When called @code{mime/viewer-mode}, tm-view analyzes +raw-article-buffer, and sets its result to the variable +@code{mime::article/content-info}.@refill + +After that, tm-view create a preview-buffer corresponded to the +raw-article-buffer. As this time, tm-view modifies header and body of +each parts of the message by specified conditions. Filter program for +header is called @cindex{header-filter}@strong{header-filter} +(@ref{content-header}), filter program for body is called +@cindex{content-filter}@strong{content-filter} (@ref{content-body}), and +they are called @cindex{filter}@strong{filter}.@refill + +When preview-buffer is made, buffer local variable of preview-buffer +@code{mime::preview/content-list} is made to register structure of +preview-buffer. tm-view manages message by +@code{mime::article/content-info} in raw-article-buffer and +@code{mime::preview/content-list} in preview-buffer.@refill + +@noindent +@strong{[Notice]} +@quotation +In this document, I call ``content-type'' as content-type/subtype of +Content-Type field. +@end quotation + + + +@menu +* raw-article-buffer:: buffer local variables of raw-article-buffer +* preview-buffer:: Buffer local variables of preview-buffer +@end menu + +@node raw-article-buffer, preview-buffer, Two buffers for an article, Two buffers for an article +@section buffer local variables of raw-article-buffer + +@deffn{Structure} mime::content-info rcnum point-min point-max type parameters encoding children + +structure to represent MIME content in raw-article-buffer. It is called +by @cindex{content-info}@strong{content-info}.@refill + +Please use reference function @code{mime::content-info/SLOT-NAME} to +reference slot of content-info. Their argument is only +content-info.@refill + +Following is a list of slots of the structure: + +@table @var +@item rcnum +``reversed content-number'' (list) + +@item point-min +beginning point of region in raw-article-buffer + +@item point-max +end point of region in raw-article-buffer + +@item type +content-type/sub-type (string or nil) + +@item parameters +parameter of Content-Type field (association list) + +@item encoding +Content-Transfer-Encoding (string or nil) + +@item children +parts included in this part (list of content-infos) + +@end table + +If a part includes other parts in its contents, such as multipart or +message/rfc822, content-infos of other parts are included in +@var{children}, so content-info become a tree. +@end deffn + + +@defvar mime::article/content-info + +result of MIME parsing of raw-article-buffer (content-info) +@end defvar + + +@defvar mime::article/preview-buffer + +preview-buffer corresponded by this buffer +@end defvar + + +@defun mime-article/point-content-number point &optional cinfo + +In a region managed by content-info @var{cinfo}, it returns +content-number corresponded by @var{point}.@refill + +If @var{cinfo} is omitted, @code{mime::article/content-info} is used as +default value. +@end defun + + +@defun mime-article/rcnum-to-cinfo rcnum &optional cinfo + +In a region managed by content-info @var{cinfo}, it returns content-info +corresponded by reversed-content-number @var{rcnum}.@refill + +If @var{cinfo} is omitted, @code{mime::article/content-info} is used as +default value. +@end defun + + +@defun mime-article/cnum-to-cinfo rcnum &optional cinfo + +In a region managed by content-info @var{cinfo}, it returns content-info +corresponded by content-number @var{rcnum}.@refill + +If @var{cinfo} is omitted, @code{mime::article/content-info} is used as +default value. +@end defun + + +@defun mime/flatten-content-info &optional cinfo + +It returns flatten list of content-info from content-info @var{cinfo} +tree.@refill + +If @var{cinfo} is omitted, @code{mime::article/content-info} is used as +default value. +@end defun + + + +@node preview-buffer, , raw-article-buffer, Two buffers for an article +@section Buffer local variables of preview-buffer + +@defvar mime::preview/mother-buffer + +Mother buffer of this preview-buffer. +@end defvar + + +@deffn{Structure} mime::preview-content-info point-min point-max buffer content-info + +structure to represent MIME content in preview-buffer. It is called by +@cindex{preview-content-info}@strong{preview-content-info}.@refill + +Please use reference function +@code{mime::preview-content-info/SLOT-NAME} to reference slot of +preview-content-info. Their argument is only +preview-content-info.@refill + +Following is a list of slots of the structure: + +@table @var +@item point-min +beginning point of region in preview-buffer + +@item point-max +end point of region in preview-buffer + +@item buffer +raw-article-buffer corresponding a part + +@item content-info +content-info corresponding a part + +@end table +@end deffn + + + +@defvar mime::preview/content-list + +List of preview-content-info to represent structure of this +preview-buffer. +@end defvar + + + +@defvar mime::preview/article-buffer + +raw-article-buffer corresponded by this preview-buffer. +@end defvar + + + +@defvar mime::preview/original-major-mode + +major-mode of original buffer. +@end defvar + + + +@defvar mime::preview/original-window-configuration + +window-configuration just before made this preview-buffer. +@end defvar + + + +@defun mime-preview/point-pcinfo point &optional pcl + +In a region of preview-buffer managed by preview-content-info @var{pcl}, +it returns preview-content-info corresponded by @var{point}.@refill + +If @var{cinfo} is omitted, @code{mime::preview/content-list} is used. +@end defun + + + +@node API, Concept Index, Two buffers for an article, Top +@chapter Functions to decode MIME message + +tm-view provides some available functions to decode and navigate MIME +message to each MUA (@ref{(tm-en)MUA})s.@refill + +There are 2 kinds of functions, one is for MIME preview, another one is +to decode RFC 1522 encoded-word (@ref{(tm-en)encoded-word}). + + +@menu +* API about MIME preview:: Function to preview MIME message +* encoded-word decoding:: encoded-word decoder +@end menu + +@node API about MIME preview, encoded-word decoding, API, API +@section Function to preview MIME message + + +@deffn{Command} mime/viewer-mode &optional mother ctl encoding ibuf obuf mother-keymap + +Parse @var{ibuf} as a MIME message, and create preview-buffer into +@var{obuf} to display to user, then enter @code{mime/viewer-mode} +(@ref{mime/viewer-mode}).@refill + +If @var{ibuf} is omitted, current buffer is used.@refill + +@var{mother} is used to specify original raw-article-buffer. It may be +useful when a raw-article-buffer is assembled from message/partial +messages.@refill + +@var{ctl} is used to specify Content-Type field +(@ref{(tm-en)Content-Type field}) information. Its format is output +format of @code{mime/Content-Type}. When @var{ctl} is specified, +tm-view uses it instead of Content-Type field of the +raw-article-buffer.@refill + +@var{encoding} is used to specify field-body of +Content-Transfer-Encoding field. When is is specified, tm-view uses it +instead of Content-Type field of the raw-article-buffer.@refill + +If @var{mother-keymap} is specified, keymap of @code{mime/viewer-mode} +includes it. +@end deffn + + + +@node encoded-word decoding, , API about MIME preview, API +@section encoded-word decoder + +tm-view has functions to decode RFC 1522 encoded-word +(@ref{(tm-en)encoded-word}). + + +@deffn{Command} mime/decode-message-header + +It decodes encoded-words in message header of current buffer.@refill + +If an encoded-word is broken or invalid, or it has non supported MIME +charset (@ref{(tm-en)MIME charset}), it is not decoded. +@end deffn + + + +@deffn{Command} mime-eword/decode-region start end &optional unfolding must-unfold + +It decodes encoded-words in region @var{start} to @var{end}.@refill + +If an encoded-word is broken or invalid, or it has non supported MIME +charset (@ref{(tm-en)MIME charset}), it is not decoded.@refill + +If @var{unfolding} is non-nil, it unfolds folded fields.@refill + +If @var{must-fold} is non-nil and decoded result of an encoded-word has +folding or raw CR or LF, it unfolds or delete raw CR or LF. +@end deffn + + + +@defun mime-eword/decode-string string &optional must-unfold + +It decodes encoded-words in @var{string} and returns decoded +string.@refill + +If an encoded-word is broken or invalid, or it has non supported MIME +charset (@ref{(tm-en)MIME charset}), it is not decoded.@refill + +If @var{string} is folded, it unfolds @var{string} before +decoding.@refill + +If @var{must-fold} is non-nil and decoded result of an encoded-word has +folding or raw CR or LF, it unfolds or delete raw CR or LF. +@end defun + + + +@node Concept Index, Function Index, API, Top +@chapter Concept Index + +@printindex cp + +@node Function Index, Variable Index, Concept Index, Top +@chapter Function Index + +@printindex fn + +@node Variable Index, , Function Index, Top +@chapter Variable Index + +@printindex vr +@bye diff --git a/tm-bbdb.el b/tm-bbdb.el index 2a8af28..e07e816 100644 --- a/tm-bbdb.el +++ b/tm-bbdb.el @@ -6,7 +6,7 @@ ;; Author: Shuhei KOBAYASHI <shuhei-k@jaist.ac.jp> ;; Artur Pioro <artur@flugor.if.uj.edu.pl> ;; Maintainer: Shuhei KOBAYASHI <shuhei-k@jaist.ac.jp> -;; Version: $Id: tm-bbdb.el,v 7.19 1996/10/22 05:28:23 shuhei-k Exp $ +;; Version: $Id: tm-bbdb.el,v 7.22 1996/11/30 18:40:09 shuhei-k Exp $ ;; Keywords: mail, news, MIME, multimedia, multilingual, BBDB ;; This file is part of tm (Tools for MIME). @@ -28,12 +28,10 @@ ;;; Code: -(require 'bbdb) -(require 'bbdb-com) (require 'std11) (require 'tm-ew-d) (require 'tm-view) - +(require 'bbdb-com) ; (require 'bbdb) implicitly ;;; @ mail-extr ;;; @@ -148,7 +146,7 @@ the user confirms the creation." )))) (defun tm-bbdb/annotate-sender (string) - "Add a line to the end of the Notes field of the BBDB record + "Add a line to the end of the Notes field of the BBDB record corresponding to the sender of this message." (interactive (list (if bbdb-readonly-p @@ -179,24 +177,28 @@ This buffer will be in bbdb-mode, with associated keybindings." (defun tm-bbdb/pop-up-bbdb-buffer (&optional offer-to-create) "Make the *BBDB* buffer be displayed along with the MIME preview window(s), displaying the record corresponding to the sender of the current message." - (bbdb-pop-up-bbdb-buffer - (function - (lambda (w) - (let ((b (current-buffer))) - (set-buffer (window-buffer w)) - (prog1 (eq major-mode 'mime/viewer-mode) - (set-buffer b)))))) - (let ((bbdb-gag-messages t) - (bbdb-use-pop-up nil) - (bbdb-electric-p nil)) - (let ((record (tm-bbdb/update-record offer-to-create)) - (bbdb-elided-display (bbdb-pop-up-elided-display)) - (b (current-buffer))) - (bbdb-display-records (if record (list record) nil)) - (or record - (delete-windows-on (get-buffer "*BBDB*"))) - (set-buffer b) - record))) + (let ((framepop (eq temp-buffer-show-function 'framepop-display-buffer))) + (or framepop + (bbdb-pop-up-bbdb-buffer + (function + (lambda (w) + (let ((b (current-buffer))) + (set-buffer (window-buffer w)) + (prog1 (eq major-mode 'mime/viewer-mode) + (set-buffer b))))))) + (let ((bbdb-gag-messages t) + (bbdb-use-pop-up nil) + (bbdb-electric-p nil)) + (let ((record (tm-bbdb/update-record offer-to-create)) + (bbdb-elided-display (bbdb-pop-up-elided-display)) + (b (current-buffer))) + (if framepop + (if record + (bbdb-display-records (list record)) + (framepop-banish)) + (bbdb-display-records (if record (list record) nil))) + (set-buffer b) + record)))) (defun tm-bbdb/define-keys () (let ((mime/viewer-mode-map (current-local-map))) @@ -220,9 +222,9 @@ displaying the record corresponding to the sender of the current message." (defun signature/set-bbdb-sigtype (sigtype addr) "Add sigtype information to BBDB." (let* ((bbdb-notice-hook nil) - (record (bbdb-annotate-message-sender + (record (bbdb-annotate-message-sender addr t - (bbdb-invoke-hook-for-value + (bbdb-invoke-hook-for-value bbdb/mail-auto-create-p) t))) (if record @@ -236,7 +238,7 @@ displaying the record corresponding to the sender of the current message." (addr (and to (car (cdr (mail-extract-address-components to))))) (sigtype (signature/get-bbdb-sigtype addr)) - return + return ) (if addr (if verbose diff --git a/tm-def.el b/tm-def.el index 67d9b6e..7d341d0 100644 --- a/tm-def.el +++ b/tm-def.el @@ -3,7 +3,7 @@ ;; Copyright (C) 1995,1996 Free Software Foundation, Inc. ;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp> -;; Version: $Id: tm-def.el,v 7.65 1996/10/28 08:43:40 morioka Exp $ +;; Version: $Id: tm-def.el,v 7.66 1996/11/26 18:00:45 shuhei-k Exp $ ;; Keywords: mail, news, MIME, multimedia, definition ;; This file is part of tm (Tools for MIME). @@ -180,14 +180,21 @@ ;;; (defconst base64-token-regexp "[A-Za-z0-9+/=]") +(defconst base64-token-padding-regexp "[A-Za-z0-9+/=]") (defconst mime/B-encoded-text-regexp - (concat "\\(" + (concat "\\(\\(" base64-token-regexp base64-token-regexp base64-token-regexp base64-token-regexp - "\\)+")) + "\\)*" + base64-token-regexp + base64-token-regexp + base64-token-padding-regexp + base64-token-padding-regexp + "\\)")) + (defconst mime/B-encoding-and-encoded-text-regexp (concat "\\(B\\)\\?" mime/B-encoded-text-regexp)) diff --git a/tm-edit.el b/tm-edit.el index 4e73e16..15185ca 100644 --- a/tm-edit.el +++ b/tm-edit.el @@ -6,7 +6,7 @@ ;; MORIOKA Tomohiko <morioka@jaist.ac.jp> ;; Maintainer: MORIOKA Tomohiko <morioka@jaist.ac.jp> ;; Created: 1994/08/21 renamed from mime.el -;; Version: $Revision: 7.94 $ +;; Version: $Revision: 7.95 $ ;; Keywords: mail, news, MIME, multimedia, multilingual ;; This file is part of tm (Tools for MIME). @@ -29,19 +29,19 @@ ;;; Commentary: ;; This is an Emacs minor mode for editing Internet multimedia -;; messages formatted in MIME (RFC 1521 and RFC 1522). All messages in -;; this mode are composed in the tagged MIME format, that are -;; described in the following examples. The messages composed in the -;; tagged MIME format are automatically translated into a MIME -;; compliant message when exiting the mode. +;; messages formatted in MIME (RFC 2045, 2046, 2047, 2048 and 2049). +;; All messages in this mode are composed in the tagged MIME format, +;; that are described in the following examples. The messages +;; composed in the tagged MIME format are automatically translated +;; into a MIME compliant message when exiting the mode. ;; Mule (a multilingual extension to Emacs 18 and 19) has a capability ;; of handling multilingual text in limited ISO-2022 manner that is ;; based on early experiences in Japanese Internet community and -;; resulted in RFC 1468 (ISO-2022-JP charset for MIME). In order to +;; resulted in RFC 1468 (ISO-2022-JP charset for MIME). In order to ;; enable multilingual capability in single text message in MIME, ;; charset of multilingual text written in Mule is declared as either -;; `ISO-2022-JP-2' [RFC 1554] or `ISO-2022-INT-1'. Mule is required +;; `ISO-2022-JP-2' [RFC 1554] or `ISO-2022-INT-1'. Mule is required ;; for reading the such messages. ;; This MIME composer can work with Mail mode, mh-e letter Mode, and @@ -121,7 +121,7 @@ ;;; (defconst mime-editor/RCS-ID - "$Id: tm-edit.el,v 7.94 1996/11/16 07:51:41 morioka Exp $") + "$Id: tm-edit.el,v 7.95 1996/12/04 04:43:01 morioka Exp $") (defconst mime-editor/version (get-version-string mime-editor/RCS-ID)) diff --git a/tm-ew-d.el b/tm-ew-d.el index e69cc5c..9eec4d7 100644 --- a/tm-ew-d.el +++ b/tm-ew-d.el @@ -1,4 +1,4 @@ -;;; tm-ew-d.el --- RFC 1522 based MIME encoded-word decoder for GNU Emacs +;;; tm-ew-d.el --- RFC 2047 based encoded-word decoder for GNU Emacs ;; Copyright (C) 1995,1996 Free Software Foundation, Inc. @@ -9,8 +9,8 @@ ;; Original: 1992/07/20 ENAMI Tsugutomo's `mime.el'. ;; Renamed: 1993/06/03 to tiny-mime.el. ;; Renamed: 1995/10/03 from tiny-mime.el. (split off encoder) -;; Version: $Revision: 7.29 $ -;; Keywords: mail, news, MIME, RFC 1522, multilingual, encoded-word +;; Version: $Revision: 7.34 $ +;; Keywords: encoded-word, MIME, multilingual, header, mail, news ;; This file is part of tm (Tools for MIME). @@ -41,7 +41,7 @@ ;;; (defconst tm-ew-d/RCS-ID - "$Id: tm-ew-d.el,v 7.29 1996/10/13 18:44:49 morioka Exp $") + "$Id: tm-ew-d.el,v 7.34 1996/12/04 04:49:14 morioka Exp $") (defconst mime/eword-decoder-version (get-version-string tm-ew-d/RCS-ID)) @@ -122,9 +122,7 @@ such as a version of Net$cape). [tm-ew-d.el]" (mime/unfolding) ) (goto-char (point-min)) - (while (re-search-forward - (concat (regexp-quote "?=") "\\s +" (regexp-quote "=?")) - nil t) + (while (re-search-forward "\\?=\\(\n*\\s +\\)+=\\?" nil t) (replace-match "?==?") ) (goto-char (point-min)) @@ -157,14 +155,15 @@ such as a version of Net$cape). [tm-ew-d.el]" (let (field beg end) (while (re-search-forward std11-field-head-regexp nil t) (setq beg (match-beginning 0) - end (std11-field-end)) + end (std11-field-end)) (setq field (buffer-substring beg end)) (if (string-match mime/encoded-word-regexp field) - (save-restriction - (narrow-to-region (goto-char beg) end) - (while (re-search-forward "\n[ \t]+" nil t) - (replace-match " ") - ) + (save-restriction + (narrow-to-region (goto-char beg) end) + (while (re-search-forward "\n\\([ \t]\\)" nil t) + (replace-match + (match-string 1)) + ) (goto-char (point-max)) )) ))) @@ -193,7 +192,9 @@ as a version of Net$cape). [tm-ew-d.el]" (text (substring word (match-beginning 3) (match-end 3)) )) - (mime/decode-encoded-text charset encoding text must-unfold) + (condition-case err + (mime/decode-encoded-text charset encoding text must-unfold) + (error nil)) )) word)) @@ -215,11 +216,13 @@ as a version of Net$cape). [tm-ew-d.el]" (let ((cs (mime-charset-to-coding-system charset))) (if cs (let ((dest - (cond ((string-equal "B" encoding) - (base64-decode-string string)) - ((string-equal "Q" encoding) - (q-encoding-decode-string string)) - (t (message "unknown encoding %s" encoding) + (cond ((and (string-equal "B" encoding) + (string-match mime/B-encoded-text-regexp string)) + (base64-decode-string string)) + ((and (string-equal "Q" encoding) + (string-match mime/Q-encoded-text-regexp string)) + (q-encoding-decode-string string)) + (t (message "Invalid encoded-word %s" encoding) nil)))) (if dest (progn diff --git a/tm-ew-e.el b/tm-ew-e.el index 9d4b466..1cbab84 100644 --- a/tm-ew-e.el +++ b/tm-ew-e.el @@ -1,10 +1,10 @@ -;;; tm-ew-e.el --- RFC 1522 based MIME encoded-word encoder for GNU Emacs +;;; tm-ew-e.el --- RFC 2047 based encoded-word encoder for GNU Emacs ;; Copyright (C) 1995,1996 Free Software Foundation, Inc. ;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp> -;; Version: $Revision: 7.55 $ -;; Keywords: mail, news, MIME, RFC 1522, multilingual, encoded-word +;; Version: $Revision: 7.56 $ +;; Keywords: encoded-word, MIME, multilingual, header, mail, news ;; This file is part of tm (Tools for MIME). @@ -35,7 +35,7 @@ ;;; (defconst tm-ew-e/RCS-ID - "$Id: tm-ew-e.el,v 7.55 1996/10/01 13:36:22 morioka Exp $") + "$Id: tm-ew-e.el,v 7.56 1996/12/04 04:48:37 morioka Exp $") (defconst mime-eword/encoder-version (get-version-string tm-ew-e/RCS-ID))