Merge flim-1_11_0.
[elisp/flim.git] / mime-en.sgml
1 <!doctype sinfo system>
2 <head>
3 <title>FLIM 1.10 Manual about MIME Features
4 <author>MORIOKA Tomohiko <mail>morioka@jaist.ac.jp</mail>
5 <date>1998/07/01
6
7 <toc>
8 </head>
9
10 <body>
11
12 <abstract>
13 <p>
14 This file documents MIME features of FLIM, a Internet message
15 parsing/encoding library for GNU Emacs.
16 </abstract>
17
18
19 <h1> What is FLIM?
20 <node> Introduction
21 <p>
22 FLIM is a library to provide basic features about message
23 representation or encoding.
24
25
26 <h1> How to use MIME features
27 <node> How to use
28 <p>
29 Please eval following to use MIME features provided by FLIM:
30
31 <lisp>
32 (require 'mime)
33 </lisp>
34
35
36 <h1> Message and Entity
37 <node> Entity
38 <p>
39 According to <dref>RFC 2045</dref>, `The term ``entity'', refers
40 specifically to the MIME-defined header fields and contents of either
41 a message or one of the parts in the body of a multipart entity.'  In
42 this document, the term <concept>entity</concept> indicates all of
43 header fields and body.
44 <p>
45 The definition of RFC 2045 indicates that a MIME message is a tree,
46 and each node of the tree is an entity.  Namely MIME extends message
47 to tree structure.
48 <p>
49 FLIM uses <concept>mime-entity</concept> structure to represent
50 information of entity.  In this document, it is called simply
51 `mime-entity'.
52
53
54 <h2> Functions to create mime-entity
55 <node> Entity creation
56 <p>
57 <defun name="mime-open-entity">
58           <opts> type location
59 <p>
60 Open an entity and return it.
61 <p>
62 <var>type</var> is representation-type. <cf node="mm-backend">
63 <p>
64 <var>location</var> is location of entity.  Specification of it is
65 depended on representation-type.
66 </defun>
67
68 <defun name="mime-parse-buffer">
69           <opts> buffer type
70 <p>
71 Parse <var>buffer</var> as message, and set the result to buffer local
72 variable <code>mime-message-structure</code> of <var>buffer</var> as
73 mime-entity.
74 <p>
75 If <var>buffer</var> is omitted, current buffer is used.
76 <p>
77 <var>type</var> is representation-type of created mime-entity. <cf
78 node="mm-backend"> Default value is <var>buffer</var>.
79 </defun>
80
81
82 <h2> Features about message tree
83 <node> Entity hierarchy
84 <p>
85 Structure of a MIME message is tree.
86 <p>
87 In the tree, root node is the entity indicates all of the message.  In
88 this document, it is called <concept>root-entity</concept> or
89 <concept>message</concept>.  In FLIM, it is indicated by buffer local
90 variable <code>mime-message-structure</code>.
91 <p>
92 Each entity except root-entity has a parent.  An entity may have
93 children.  We can indicate an entity by relative position from a base
94 entity, based on the parent-child relationship.
95 <p>
96 In addition, we can indicate an entity by absolute position of the
97 message.
98 <p>
99 Each entity, which is a node of the tree, can be numbered by
100 depth and left-to-right order of the depth.
101 <verb>
102
103                               +-------+
104                               |  nil  |
105                               +---+---+
106               +-------------------+-------------------+
107             +-+-+               +-+-+               +-+-+
108             | 0 |               | 1 |               | 2 |
109             +-+-+               +-+-+               +-+-+
110               |         +---------+---------+         |
111            +--+--+   +--+--+   +--+--+   +--+--+   +--+--+
112            | 0.0 |   | 1.0 |   | 1.1 |   | 1.2 |   | 2.0 |
113            +-----+   +-----+   +-----+   +-----+   +-----+
114
115 </verb>
116 <p>
117 Namely, if depth of a node is n, the node has a node-number, which is
118 consists of n integers.  In this document, it is called
119 <concept>entity-number</concept>.  An entity-number is represented by
120 list of integer, like <code>(1 2 3)</code>.
121 <p>
122 mime-entity has also <concept>node-id</concept>.  A node-id is
123 represented by reversed list of entity-number.  For example, node-id
124 corresponding with 1.2.3 is <code>(3 2 1)</code>.
125 <p>
126 Each entity can be indicated by entity-number or node-id in
127 <code>mime-message-structure</code>.
128
129 <defvar name="mime-message-structure">
130 <p>
131 Buffer local variable to store mime-entity structure of message.
132 </defvar>
133
134 <defun name="mime-entity-children">
135           <args> entity
136 <p>
137 Return list of entities included in the <var>entity</var>.
138 </defun>
139
140 <defun name="mime-entity-parent">
141           <args> entity <opts> message
142 <p>
143 Return parent entity of the <var>entity</var>.
144 <p>
145 If <var>message</var> is specified, it is regarded as root instead of
146 <code>mime-message-structure</code>.
147 </defun>
148
149 <defun name="mime-root-entity-p">
150           <args> entity
151 <p>
152 Return non-<code>nil</code> if <var>entity</var> is root entity
153 (message).
154 </defun>
155
156 <defun name="mime-entity-node-id">
157           <args> entity
158 <p>
159 Return node-id of <var>entity</var>.
160 </defun>
161
162 <defun name="mime-entity-number">
163           <args> entity
164 <p>
165 Return entity-number of <var>entity</var>.
166 </defun>
167
168 <defun name="mime-find-entity-from-number">
169             <args> entity-number <opts> message
170 <p>
171 Return entity from <var>entity-number</var> in <var>message</var>.
172 <p>
173 If <var>message</var> is not specified,
174 <code>mime-message-structure</code> is used.
175 </defun>
176
177 <defun name="mime-find-entity-from-node-id">
178             <args> entity-node-id <opts> message
179 <p>
180 Return entity from <var>entity-node-id</var> in <var>message</var>.
181 <p>
182 If <var>message</var> is not specified,
183 <code>mime-message-structure</code> is used.
184 </defun>
185
186
187 <h2> Functions about attributes of mime-entity
188 <node> Entity Attributes
189 <p>
190 <defun name="mime-entity-content-type">
191             <args> entity
192 <p>
193 Return content-type of <var>entity</var>.
194 <cf node="mime-content-type">
195 </defun>
196
197 <defun name="mime-entity-content-disposition">
198             <args> entity
199 <p>
200 Return content-disposition of <var>entity</var>. <cf
201 node="mime-content-disposition">
202 </defun>
203
204 <defun name="mime-entity-filename">
205             <args> entity
206 <p>
207 Return file name of <var>entity</var>.
208 </defun>
209
210 <defun name="mime-entity-encoding">
211             <args> entity <opts> default-encoding
212 <p>
213 Return content-transfer-encoding of <var>entity</var>.
214 <cf node="Content-Transfer-Encoding">
215 <p>
216 If the <var>entity</var> does not have Content-Transfer-Encoding
217 field, this function returns <var>default-encoding</var>.  If it is
218 nil, <code>"7bit"</code> is used as default value.
219 </defun>
220
221 <defun name="mime-entity-cooked-p">
222             <args> entity
223 <p>
224 Return non-nil if contents of <var>entity</var> has been already
225 code-converted.
226 </defun>
227
228
229 <h2> Information of entity header
230 <node> Entity-header
231 <p>
232 <defun name="mime-fetch-field">
233             <args> field-name <opts> entity
234 <p>
235 Return field-body of <var>field-name</var> field in header of
236 <var>entity</var>.
237 <p>
238 The results is network representation.
239 <p>
240 If <var>entity</var> is omitted, <code>mime-message-structure</code>
241 is used as default value.
242 <p>
243 If <var>field-name</var> field is not found, this function returns
244 <code>nil</code>.
245 </defun>
246
247 <defun name="mime-read-field">
248             <args> field-name <opts> entity
249 <p>
250 Parse <var>field-name</var> field in header of <var>entity</var>, and
251 return the result.
252 <p>
253 Format of result is depended on kind of field.  For non-structured
254 field, this function returns string.  For structured field, it returns
255 list corresponding with structure of the field.
256 <p>
257 Strings in the result will be converted to internal representation of
258 Emacs.
259 <p>
260 If <var>entity</var> is omitted, <code>mime-message-structure</code>
261 is used as default value.
262 <p>
263 If <var>field-name</var> field is not found, this function returns
264 <code>nil</code>.
265 </defun>
266
267
268 <h2> Text presentation of entity
269 <node> entity formatting
270 <p>
271 <defun name="mime-insert-header">
272             <args> entity <opts> invisible-fields visible-fields
273 <p>
274 Insert before point a decoded contents of header of <var>entity</var>.
275 <p>
276 <var>invisible-fields</var> is list of regexps to match field-name to
277 hide.  <var>visible-fields</var> is list of regexps to match
278 field-name to hide.
279 <p>
280 If a field-name is matched with some elements of
281 <var>invisible-fields</var> and matched with none of
282 <var>visible-fields</var>, this function don't insert the field.
283 <p>
284 Each <dref>encoded-word</dref> in the header is decoded.  ``Raw non
285 us-ascii characters'' are also decoded as
286 <code>default-mime-charset</code>.
287 </defun>
288
289 <defun name="mime-insert-text-content">
290             <args> entity
291 <p>
292 Insert before point a contents of <var>entity</var> as text entity.
293 <p>
294 Contents of the <var>entity</var> are decoded as <dref>MIME
295 charset</dref>.  If the <var>entity</var> does not have charset
296 parameter of Content-Type field, <code>default-mime-charset</code> is
297 used as default value.
298 </defun>
299
300 <defvar name="default-mime-charset">
301 <p>
302 Symbol to indicate default value of <dref>MIME-charset</dref>.
303 <p>
304 It is used when MIME-charset is not specified.
305 <p>
306 It is originally variable of APEL.
307 </defvar>
308
309
310 <h2> Contents of Entity
311 <node> Entity-content
312 <p>
313 <defun name="mime-entity-content">
314             <args> entity
315 <p>
316 Return content of <var>entity</var> as byte sequence.
317 </defun>
318
319 <defun name="mime-write-entity-content">
320             <args> entity filename
321 <p>
322 Write content of <var>entity</var> into <var>filename</var>.
323 </defun>
324
325 <defun name="mime-write-entity">
326             <args> entity filename
327 <p>
328 Write representation of <var>entity</var> into <var>filename</var>.
329 </defun>
330
331 <defun name="mime-write-entity-body">
332             <args> entity filename
333 <p>
334 Write body of <var>entity</var> into <var>filename</var>.
335 </defun>
336
337
338 <h2> Entity as buffer representation
339 <node> Entity buffer
340 <p>
341 <defun name="mime-entity-buffer">
342             <args> entity
343 <p>
344 Return buffer, which contains <var>entity</var>.
345 </defun>
346
347 <defun name="mime-entity-point-min">
348             <args> entity
349 <p>
350 Return the start point of <var>entity</var> in the buffer which
351 contains <var>entity</var>.
352 </defun>
353
354 <defun name="mime-entity-point-max">
355             <args> entity
356 <p>
357 Return the end point of <var>entity</var> in the buffer which
358 contains <var>entity</var>.
359 </defun>
360
361 <defun name="mime-entity-header-start">
362             <args> entity
363 <p>
364 Return the start point of header of <var>entity</var> in the buffer
365 which contains <var>entity</var>.
366 </defun>
367
368 <defun name="mime-entity-header-end">
369             <args> entity
370 <p>
371 Return the end point of header of <var>entity</var> in the buffer
372 which contains <var>entity</var>.
373 </defun>
374
375 <defun name="mime-entity-body-start">
376             <args> entity
377 <p>
378 Return the start point of body of <var>entity</var> in the buffer
379 which contains <var>entity</var>.
380 </defun>
381
382 <defun name="mime-entity-body-end">
383             <args> entity
384 <p>
385 Return the end point of body of <var>entity</var> in the buffer which
386 contains <var>entity</var>.
387 </defun>
388
389
390 <h2> Entity representations and implementations
391 <node> mm-backend
392 <p>
393 Entity is an abstraction.  It is designed to use various data
394 representations for their purposes.
395 <p>
396 Each entity has <concept>representation-type</concept>.  It must be
397 specified when an entity is created. <cf node="Entity Creation">
398 <p>
399 Functions about entity are implemented by request processing to the
400 entity.  Each entity knows its representation-type.  Each entity calls
401 processing function corresponding with the representation-type.  Such
402 kind of function is called <concept>entity processing
403 method</concept>.  A module, consists of them corresponding with a
404 representation-type, is called <concept>mm-backend</concept>.
405 <p>
406 Module name of each mm-backend consists of the prefix <code>mm</code>
407 and its representation-type.  The module is required automatically
408 when its entity is created at first.
409
410
411 <h3> Message-passing for entity
412 <node> Request for entity
413 <p>
414 <defun name="mime-entity-send">
415               <args> entity message <rest> args
416 <p>
417 Send <var>message</var> to <var>entity</var> with <var>args</var>, and
418 return the result.
419 <p>
420 <var>args</var> is arguments of the <var>message</var>.
421 </defun>
422
423
424 <h3> Definition of mm-backend
425 <node> mm-backend module
426 <p>
427 <defmacro name="mm-define-backend">
428 <args> type
429 <opts> parents
430 <p>
431 Define <var>type</var> as a mm-backend.
432 <p>
433 If <var>PARENTS</var> is specified, <var>type</var> inherits parents.
434 Each parent must be representation-type.
435 <p>
436 Example:
437 <p>
438 <lisp>
439 (mm-define-backend chao (generic))
440 </lisp>
441 </defmacro>
442
443 <defmacro name="mm-define-method">
444 <args> name args <rest> body
445 <p>
446 Define <var>name</var> as a method function of (nth 1 (car
447 <var>args</var>)) backend.
448 <p>
449 <var>args</var> is like an argument list of lambda, but (car
450 <var>args</var>) must be specialized parameter.  (car (car
451 <var>args</var>)) is name of variable and (nth 1 (car
452 <var>args</var>)) is name of backend (representation-type).
453 <p>
454 Example:
455 <p>
456 <lisp>
457 (mm-define-method entity-cooked-p ((entity chao)) nil)
458 </lisp>
459 </defmacro>
460
461
462 <h1> Information of Content-Type field
463 <node> Content-Type
464 <p>
465 <concept>Content-Type field</concept> is a field to indicate kind of
466 contents or data format, such as <dref>media-type</dref> and MIME
467 charset.  It is defined in <dref>RFC 2045</dref>.
468
469 <memo>
470 <p>
471 Historically, Content-Type field was proposed in RFC 1049.  In it,
472 Content-Type did not distinguish type and subtype, and there are no
473 mechanism to represent kind of character code like MIME charset.
474 </memo>
475
476 <p>
477 FLIM provides parser for Content-Type field and structure
478 <concept>mime-content-type</concept> to store information of
479 Content-Type field.
480
481
482 <h2> Format of Content-Type field
483 <node> Content-Type field
484 <p>
485 Format of Content-Type field is defined as follows:
486
487 <quote>
488 ``Content-Type'' ``:'' <concept>type</concept> ``/''
489 <concept>subtype</concept> *( ``;'' <concept>parameter</concept> )
490 </quote>
491 <p>
492 For example:
493
494 <quote>
495 <verb>
496 Content-Type: image/jpeg
497 </verb>
498 </quote>
499
500 <quote>
501 <verb>
502 Content-Type: text/plain; charset=iso-2022-jp
503 </verb>
504 </quote>
505 <p>
506 `type' and `subtype' indicate format of an entity.  In this document,
507 pair of them is called `media-type'.  `image/jpeg' or `text/plain' is
508 a media-type.
509
510 <memo>
511 <p>
512 If an entity does not have Content-Type field, it is regarded as
513 following:
514
515 <quote>
516 <verb>
517 Content-Type: text/plain; charset=us-ascii
518 </verb>
519 </quote>
520
521 <noindent>
522 <cf node="us-ascii">
523 </memo>
524
525
526 <h2> mime-content-type structure
527 <node> mime-content-type
528 <p>
529 <define type="Structure" name="mime-content-type">
530 <p>
531 Structure to store information of a Content-Type field.
532 <p>
533 Applications should use reference functions
534 <code>mime-content-type-SLOT</code> to refer information of the
535 structure.
536 <p>
537 Slots of the structure are following:
538
539 <vl>
540 <dt>primary-type<dd>primary type of media-type (symbol).
541 </dd>
542 <dt>subtype<dd>subtype of media-type (symbol).
543 </dd>
544 <dt>parameters<dd>parameters of Content-Type field (association-list).
545 </dd>
546 </vl>
547 </define>
548
549 <defun name="make-mime-content-type">
550           <args> type subtype
551           <opts> parameters
552 <p>Constructor of content-type.
553 </defun>
554
555 <defun name="mime-content-type-parameter">
556 <args> content-type parameter
557 <p>
558 Return value of <var>parameter</var> of <var>content-type</var>.
559 </defun>
560
561
562 <h2> Parser
563 <node> Content-Type parser
564 <p>
565 <defun name="mime-parse-Content-Type">
566           <args> string
567 <p>
568 Parse <var>string</var> as field-body of Content-Type field.
569 </defun>
570
571 <defun name="mime-read-Content-Type">
572 <p>
573 Read field-body of Content-Type field from current-buffer,
574 and return parsed it.
575 <p>
576 Return <code>nil</code> if Content-Type field is not found.
577 </defun>
578
579
580 <h2> Utility functions
581 <node> Content-Type utility
582 <p>
583 <defun name="mime-type/subtype-string">
584           <args> type <opts> subtype
585 <p>
586 Return type/subtype string from <var>type</var> and
587 <var>subtype</var>.
588 </defun>
589
590
591 <h1> Information of Content-Disposition field
592 <node> Content-Disposition
593 <p>
594 <concept>Content-Disposition field</concept> is an optional field to
595 specify presentation of an entity or attributes of an entity, such as
596 file name.
597
598 <rfc number="2183" type="Standards Track"
599               author="S. Dorner, K. Moore and R. Troost"
600               title="Communicating Presentation Information in
601               Internet Messages: The Content-Disposition Header"
602               date="August 1997">
603 <p>
604 FLIM provides parser for Content-Disposition field and structure
605 <concept>mime-content-disposition</concept> to store information of
606 Content-Disposition field.
607
608
609 <h2> mime-content-disposition structure
610 <node> mime-content-disposition
611 <p>
612 <define type="Structure" name="mime-content-disposition">
613 <p>
614 Structure to store information of a Content-Disposition field.
615 <p>
616 Applications should use reference functions
617 <code>mime-content-disposition-SLOT</code> to refer information of the
618 structure.
619 <p>
620 Slots of the structure are following:
621
622 <vl>
623 <dt>disposition-type<dd>disposition-type (symbol).
624 </dd>
625 <dt>parameters<dd>parameters of Content-Disposition field
626 (association-list).
627 </dd>
628 </vl>
629 </define>
630
631 <defun name="mime-content-disposition-parameter">
632 <args> content-disposition parameter
633 <p>
634 Return value of <var>parameter</var> of
635 <var>content-disposition</var>.
636 </defun>
637
638 <defun name="mime-content-disposition-filename">
639 <args> content-disposition
640 <p>
641 Return filename of <var>content-disposition</var>.
642 </defun>
643
644
645 <h2> Parser for Content-Disposition field
646 <node> Content-Disposition parser
647 <p>
648 <defun name="mime-parse-Content-Disposition">
649             <args> string
650 <p>
651 Parse <var>string</var> as field-body of Content-Disposition field,
652 and return the result.
653 </defun>
654
655 <defun name="mime-read-Content-Disposition">
656 <p>
657 Read field-body of Content-Disposition field from current-buffer,
658 <p>
659 Return nil if Content-Disposition field is not found.
660 </defun>
661
662
663 <h1> Encoding Method
664 <node> Content-Transfer-Encoding
665 <p>
666 <concept>Content-Transfer-Encoding field</concept> is a header field
667 to indicate body encoding of a entity.
668 <p>
669 FLIM provides parser functions for Content-Transfer-Encoding field.
670 They represent information of Content-Transfer-Encoding field as
671 string.
672 <p>
673 In addition, FLIM provides encoder/decoder functions by
674 Content-Transfer-Encoding.
675
676
677 <h2> Parser
678 <node> Content-Transfer-Encoding parser
679 <p>
680 <defun name="mime-parse-Content-Transfer-Encoding">
681           <args> string
682 <p>
683 <var>string</var> \e$B$r\e(B content-transfer-encoding \e$B$H$7$F2r@O$7$?7k2L$rJV$9!#\e(B
684 </defun>
685
686 <defun name="mime-read-Content-Transfer-Encoding">
687           <opts>default-encoding
688 <p>
689 \e$B8=:_$N\e(B buffer \e$B$N\e(B Content-Transfer-Encoding \e$BMs$rFI$_<h$j!"2r@O$7$?7k2L$r\e(B
690 \e$BJV$9!#\e(B
691 <p>
692 Content-Transfer-Encoding \e$BMs$,B8:_$7$J$$>l9g$O\e(B
693 <var>default-encoding</var> \e$B$rJV$9!#\e(B
694 </defun>
695
696
697 <h2> Encoder/decoder
698 <node> encoder/decoder
699 <p>
700 <defun name="mime-encode-region">
701             <args> start end encoding
702 <p>
703 Encode region <var>start</var> to <var>end</var> of current buffer
704 using <var>encoding</var>.
705 </defun>
706
707 <defun name="mime-decode-region">
708             <args> start end encoding
709 <p>
710 Decode region <var>start</var> to <var>end</var> of current buffer
711 using <var>encoding</var>.
712 </defun>
713
714
715 <defun name="mime-decode-string">
716               <args> string encoding
717 <p>
718 <var>string</var> \e$B$r\e(B <var>encoding</var> \e$B$H$7$FI|9f$7$?7k2L$rJV$7$^$9!#\e(B
719 </defun>
720
721
722 <defun name="mime-insert-encoded-file">
723             <args> filename encoding
724 <p>
725 Insert file <var>FILENAME</var> encoded by <var>ENCODING</var> format.
726 </defun>
727
728 <defun name="mime-write-decoded-region">
729               <args> start end filename encoding
730 <p>
731 Decode and write current region encoded by <var>encoding</var> into
732 <var>filename</var>.
733 <p>
734 <var>start</var> and <var>end</var> are buffer positions.
735 </defun>
736
737
738 <h2> Other utilities
739 <node> Encoding information
740 <p>
741 <defun name="mime-encoding-list">
742             <opts> SERVICE
743 <p>
744 Return list of Content-Transfer-Encoding.
745 <p>
746 If <var>service</var> is specified, it returns available list of
747 Content-Transfer-Encoding for it.
748 </defun>
749
750 <defun name="mime-encoding-alist">
751             <opts> SERVICE
752 <p>
753 Return table of Content-Transfer-Encoding for completion.
754 <p>
755 If <var>service</var> is specified, it returns available list of
756 Content-Transfer-Encoding for it.
757 </defun>
758
759
760 <h2> How to write encoder/decoder module
761 <node> mel-backend
762 <p>
763 <defmacro name="mel-define-method">
764 <args> name args <rest> body
765 <p>
766 Define <var>name</var> as a method function of (nth 1 (car (last
767 <var>args</var>))) backend.
768 <p>
769 <var>args</var> is like an argument list of lambda, but (car (last
770 <var>args</var>)) must be specialized parameter.  (car (car (last
771 <var>args</var>))) is name of variable and (nth 1 (car (last
772 <var>args</var>))) is name of backend (encoding).
773 <p>
774 Example:
775 <p>
776 <lisp>
777 (mel-define-method mime-write-decoded-region (start end filename
778                                                     (nil "base64"))
779   "Decode and write current region encoded by base64 into FILENAME.
780 START and END are buffer positions."
781   (interactive
782    (list (region-beginning) (region-end)
783          (read-file-name "Write decoded region to file: ")))
784   (let ((str (buffer-substring start end)))
785     (with-temp-buffer
786       (insert (decode-base64-string str))
787       (write-region-as-binary (point-min) (point-max) filename)
788       )))
789 </lisp>
790 </defmacro>
791
792 <defmacro name="mel-define-method-function">
793 <args> spec function
794 <p>
795 Set <var>spec</var>'s function definition to <var>function</var>.
796 <p>
797 First element of <var>spec</var> is service.
798 <p>
799 Rest of <var>args</var> is like an argument list of lambda, but (car
800 (last <var>args</var>)) must be specialized parameter.  (car (car
801 (last <var>args</var>))) is name of variable and (nth 1 (car (last
802 <var>args</var>))) is name of backend (encoding).
803 <p>
804 Example:
805 <p>
806 <lisp>
807 (mel-define-method-function (mime-encode-string string (nil "base64"))
808                             'encode-base64-string)
809 </lisp>
810 </defmacro>
811
812
813 <h2> How to add encoding/decoding service
814 <node> generic function for mel-backend
815 <p>
816 <defmacro name="mel-define-service">
817 <args> name
818 <opts> args doc-string
819 <p>
820 Define <var>name</var> as a service for Content-Transfer-Encodings.
821 <p>
822 If <var>args</var> is specified, <var>name</var> is defined as a
823 generic function for the service.
824 <p>
825 Example:
826 <p>
827 <lisp>
828 (mel-define-service encoded-text-encode-string (string encoding)
829   "Encode STRING as encoded-text using ENCODING.
830 ENCODING must be string.")
831 </lisp>
832 </defmacro>
833
834
835 <h1> Network representation of header
836 <node> encoded-word
837 <p>
838 encoded-word \e$B$O\e(B header \e$B$GHs\e(B <dref>ASCII</dref> \e$BJ8;z$rI=8=$9$k$?$a$N7A\e(B
839 \e$B<0$G!"\e(B<concept>RFC 2047</concept> \e$B$GDj5A$5$l$F$$$^$9!#\e(B
840 <p>
841 <rfc number="2047" type="Standards Track" author="K. Moore"
842               title="MIME (Multipurpose Internet Mail Extensions) Part
843               Three: Message Header Extensions for Non-ASCII Text"
844               date="November 1996" obsolete="1521,1522,1590">
845 <p>
846 \e$B$^$?!"9T57$N0-$$$3$H$@$H8@$($^$9$,!"\e(Bencoded-word \e$B$rMQ$$$:$KHs\e(B 
847 <dref>ASCII</dref> \e$BJ8;z$r\e(B header \e$B$KF~$l$?5-;v$bB8:_$7$^$9!#\e(B
848 <p>
849 FLIM \e$B$O$3$l$i$rId9f2=!&I|9f2=$9$k5!G=$rDs6!$7$^$9!#\e(B
850
851
852 <h2> Header encoding/decoding
853 <node> Header encoder/decoder
854 <p>
855 <defun name="eword-encode-header">
856               <opts> code-conversion separator
857 <p>
858 Decode MIME encoded-words in header fields.
859 <p>
860 If <var>code-conversion</var> is <code>nil</code>, it decodes only
861 encoded-words.  If it is mime-charset, it decodes non-ASCII bit
862 patterns as the mime-charset.  Otherwise it decodes non-ASCII bit
863 patterns as the default-mime-charset.
864 <p>
865 If <var>separator</var> is not nil, it is used as header separator.
866 </defun>
867
868 <defun name="eword-encode-header">
869               <opts> code-conversion
870 <p>
871 Encode header fields to network representation, such as MIME
872 encoded-word.
873 <p>
874 It refer variable <code>eword-field-encoding-method-alist</code>.
875 </defun>
876
877
878 <h1> Various Customization
879 <node> custom
880 <p>
881 <define type="group" name="mime">
882 <p>
883 MIME \e$B4XO"5!G=$K4X$9$k\e(B group.
884 <p>
885 <code>mail</code> \e$B$H\e(B <code>news</code> \e$B$KB0$9$k!#\e(B
886 </define>
887
888 <defvar name="mime-temp-directory">
889 <p>
890 MIME \e$B5!G=$K4X$9$k<BAu$,0l;~E*$K;HMQ$9$k\e(B file \e$B$r:n@.$9$k\e(B directory.
891 <p>
892 \e$B4D6-JQ?t\e(B <code>MIME_TMP_DIR</code>, <code>TM_TMP_DIR</code>,
893 <code>TMPDIR</code>, <code>TMP</code> \e$B$b$7$/$O\e(B <code>TEMP</code> \e$B$,@_Dj\e(B
894 \e$B$5$l$F$$$?>l9g!"$=$l$r=i4|CM$H$7$FMQ$$$k!#2?$b@_Dj$5$l$F$$$J$$>l9g!"\e(B
895 <code>"/tmp/"</code> \e$B$rMQ$$$k!#\e(B
896 </defvar>
897
898
899 <h1> Appendix
900 <node> Appendix
901
902 <h2> Glossary
903 <node> Glossary
904
905 <h3> 7bit
906 <node> 7bit
907 <p>
908 <concept>7bit</concept> means any integer between 0 .. 127.
909 <p>
910 Any data represented by 7bit integers is called <concept>7bit
911 data</concept>.
912 <p>
913 Textual string consisted of Control characters between 0 .. 31 and
914 127, and space represented by 32, and graphic characters between 33
915 .. 236 are called <concept>7bit (textual) string</concept>.
916 <p>
917 Conventional Internet <a node="MTA">MTA</a> can translate 7bit data,
918 so it is no need to translate by <a
919 node="Quoted-Printable">Quoted-Printable</a> or <a
920 node="Base64">Base64</a> for 7bit data.
921 <p>
922 However if there are too long lines, it can not translate by 7bit MTA
923 even if it is 7bit data.  <dref>RFC 821</dref> and <dref>RFC
924 2045</dref> require lines in 7bit data must be less than 998 bytes.
925 So if a ``7bit data'' has a line more than 999 bytes, it is regarded
926 as <dref>binary</dref>.  For example, Postscript file should be
927 encoded by Quoted-Printable.
928
929
930 <h3> 8bit
931 <node> 8bit
932 <p>
933 <concept>8bit</concept> means any integer between 0 .. 255.
934 <p>
935 Any data represented by 8bit integers is called <concept>8bit
936 data</concept>.
937 <p>
938 Textual string consisted of Control characters between 0 .. 31, 127,
939 and 128 .. 159, and space represented by 32, and graphic characters
940 between 33 .. 236 and 160 .. 255 are called <concept>8bit (textual)
941 string</concept>.
942 <p>
943 For example, <dref>iso-8859-1</dref> or <dref>euc-kr</dref> are
944 coded-character-set represented by 8bit textual string.
945 <p>
946 Traditional Internet <a node="MTA">MTA</a> can translate only
947 <dref>7bit</dref> data, so if a 8bit data will be translated such MTA,
948 it must be encoded by <dref>Quoted-Printable</dref> or
949 <dref>Base64</dref>.
950 <p>
951 However 8bit MTA are increasing today.
952 <p>
953 However if there are too long lines, it can not translate by 8bit MTA
954 even if it is 8bit data.  <dref>RFC 2045</dref> require lines in 8bit
955 data must be less than 998 bytes.  So if a ``8bit data'' has a line
956 more than 999 bytes, it is regarded as <dref>binary</dref>, so it must
957 be encoded by Base64 or Quoted-Printable.
958
959
960 <h3> ASCII
961 <node> ASCII
962 <p>
963 <concept>ASCII</concept> is a 94-character set contains primary latin
964 characters (A-Z, a-z), numbers and some characters.  It is a standard
965 of the United States of America.  It is a variant of <a node="ISO
966 646">ISO 646</a>.
967
968 <standard abbrev="ASCII" title-en="Coded Character Set -- 7-Bit
969               American Standard Code for Information Interchange"
970               number="ANSI X3.4" year="1986">
971
972
973 <h3> Base64
974 <node> Base64
975 <p>
976 <concept>Base64</concept> is a transfer encoding method of
977 <dref>MIME</dref> defined in <dref>RFC 2045</dref>.
978 <p>
979 The encoding process represents 24-bit groups of input bits as output
980 strings of 4 encoded characters.  Encoded characters represent integer
981 0 .. 63 or <concept>pad</concept>.  Base64 data must be 4 * n bytes,
982 so pad is used to adjust size.
983 <p>
984 These 65 characters are subset of all versions of ISO 646, including
985 US-ASCII, and all versions of EBCDIC.  So it is safe even if it is
986 translated by non-Internet gateways.
987
988
989 <h3> binary
990 <node> binary
991 <p>
992 Any byte stream is called <concept>binary</concept>.
993 <p>
994 It does not require structureof lines.  It differs from from <a
995 node="8bit">8bit</a>.
996 <p>
997 In addition, if line structured data contain too long line (more than
998 998 bytes), it is regarded as binary.
999
1000
1001 <h3> Coded character set, Character code
1002 <node> coded character set
1003 <p>
1004 A set of unambiguous rules that establishes a character set and the
1005 one-to-one relationship between the characters of the set and their
1006 bit combinations.
1007
1008
1009 <h3> media-type
1010 <node> media-type
1011 <p>
1012 <concept>media-type</concept> specifies the nature of the data in the
1013 body of <dref>MIME</dref> <dref>entity</dref>.  It consists of
1014 <concept>type</concept> and <concept>subtype</concept>.  It is defined
1015 in <dref>RFC 2046</dref>.
1016 <p>
1017 Currently there are following standard primary-types:
1018
1019 <ul>
1020 <li><concept>text</concept>
1021 </li>
1022 <li><concept>image</concept>
1023 </li>
1024 <li><concept>audio</concept>
1025 </li>
1026 <li><concept>video</concept>
1027 </li>
1028 <li><concept>application</concept>
1029 </li>
1030 <li><a node="multipart"><concept>multipart</concept></a>
1031 </li>
1032 <li><concept>message</concept>
1033 </ul>
1034
1035 <p>
1036 And there are various subtypes, for example, application/octet-stream,
1037 audio/basic, image/jpeg, <dref>multipart/mixed</dref>,
1038 <dref>text/plain</dref>, video/mpeg...
1039
1040 <p>
1041 You can refer registered media types at <a
1042 href="ftp://ftp.isi.edu/in-notes/iana/assignments/media-types">MEDIA
1043 TYPES</a>.
1044 <p>
1045 In addition, you can use private type or subtype using
1046 <concept>x-token</concept>, which as the prefix `x-'.  However you can
1047 not use them in public.
1048 <p>
1049 <cf node="Content-Type field">
1050
1051
1052 <h3> message
1053 <node> message
1054 <p>
1055 In this document, it means mail defined in <dref>RFC 822</dref> and
1056 news message defined in <dref>RFC 1036</dref>.
1057
1058
1059 <h3> MIME
1060 <node> MIME
1061 <p>
1062 MIME stands for <concept>Multipurpose Internet Mail
1063 Extensions</concept>, it is an extension for <dref>RFC 822</dref>.
1064 <p>
1065 According to RFC 2045:
1066 <p>
1067 STD 11, RFC 822, defines a message representation protocol specifying
1068 considerable detail about US-ASCII message headers, and leaves the
1069 message content, or message body, as flat US-ASCII text.  This set of
1070 documents, collectively called the Multipurpose Internet Mail
1071 Extensions, or MIME, redefines the format of messages to allow for
1072
1073 <ol>
1074 <li>textual message bodies in character sets other than US-ASCII,
1075 </li>
1076 <li>an extensible set of different formats for non-textual message
1077 bodies,
1078 </li>
1079 <li>multi-part message bodies, and
1080 </li>
1081 <li>textual header information in character sets other than US-ASCII.
1082 </ol>
1083
1084 <p>
1085 It is defined in <dref>RFC 2045</dref>, <dref>RFC 2046</dref>, <a
1086 node="encoded-word">RFC 2047</a>, <dref>RFC 2048</dref> and <dref>RFC
1087 2049</dref>.
1088
1089
1090 <h3> MIME charset
1091 <node> MIME charset
1092 <p>
1093 <a node="coded character set">Coded character set</a> used in
1094 <dref>Content-Type field</dref> or charset parameter of <a
1095 node="encoded-word">encoded-word</a>.
1096 <p>
1097 It is defined in <dref>RFC 2045</dref>.
1098 <p>
1099 <dref>iso-2022-jp</dref> or <dref>euc-kr</dref> are kinds of it.  (In
1100 this document, MIME charsets are written by small letters to
1101 distinguish <dref>graphic character set</dref>.  For example, ISO
1102 8859-1 is a graphic character set, and iso-8859-1 is a MIME charset)
1103
1104
1105 <h3> MTA
1106 <node> MTA
1107 <p>
1108 <concept>Message Transfer Agent</concept>.  It means mail transfer
1109 programs (ex. sendmail) and news servers.
1110 <p>
1111 <cf node="MUA">
1112
1113
1114 <h3> MUA
1115 <node> MUA
1116 <p>
1117 <concept>Message User Agent</concept>.  It means mail readers and news
1118 readers.
1119 <p>
1120 <cf node="MTA">
1121
1122
1123 <h3> Quoted-Printable
1124 <node> Quoted-Printable
1125 <p>
1126 <concept>Quoted-Printable</concept> is a transfer encoding method of
1127 <dref>MIME</dref> defined in <dref>RFC 2045</dref>.
1128 <p>
1129 If the data being encoded are mostly US-ASCII text, the encoded form
1130 of the data remains largely recognizable by humans.
1131 <p>
1132 <cf node="Base64">
1133
1134
1135 <h3> RFC 822
1136 <node> RFC 822
1137 <p>
1138 A RFC defines format of Internet mail message, mainly <concept>message
1139 header</concept>.
1140
1141 <memo>
1142 <p>
1143 news message is based on RFC 822, so <concept>Internet
1144 message</concept> may be more suitable than <concept>Internet
1145 mail</concept> .
1146 </memo>
1147
1148 <rfc number="822" type="STD 11" author="D. Crocker" title="Standard
1149               for the Format of ARPA Internet Text Messages"
1150               date="August 1982">
1151
1152
1153 <h3> RFC 1036
1154 <node> RFC 1036
1155 <p>
1156 A RFC defines format of USENET message.  It is a subset of <dref>RFC
1157 822</dref>.  It is not Internet standard, but a lot of netnews
1158 excepting Usenet uses it.
1159
1160 <rfc name="USENET" number="1036" author="M. Horton and R. Adams"
1161               title="Standard for Interchange of USENET Messages"
1162               date="December 1987" obsolete="850">
1163
1164
1165 <h3> RFC 2045
1166 <node> RFC 2045
1167 <p>
1168 <rfc number="2045" type="Standards Track" author="N. Freed and
1169               N. Borenstein" title="Multipurpose Internet Mail
1170               Extensions (MIME) Part One: Format of Internet Message
1171               Bodies" date="November 1996" obsolete="1521, 1522,
1172               1590">
1173
1174
1175 <h3> RFC 2046
1176 <node> RFC 2046
1177 <p>
1178 <rfc number="2046" type="Standards Track" author="N. Freed and
1179               N. Borenstein" title="Multipurpose Internet Mail
1180                  Extensions (MIME) Part Two: Media Types"
1181                  date="November 1996" obsolete="1521, 1522, 1590">
1182
1183
1184 <h3> RFC 2048
1185 <node> RFC 2048
1186 <p>
1187 <rfc number="2048" type="Standards Track" author="N. Freed, J. Klensin
1188               and J. Postel" title="Multipurpose Internet Mail
1189               Extensions (MIME) Part Four: Registration Procedures"
1190               date="November 1996" obsolete="1521, 1522, 1590">
1191
1192
1193 <h3> RFC 2049
1194 <node> RFC 2049
1195 <p>
1196 <rfc number="2049" type="Standards Track" author="N. Freed and
1197               N. Borenstein" title="Multipurpose Internet Mail
1198               Extensions (MIME) Part Five: Conformance Criteria and
1199               Examples" date="November 1996" obsolete="1521, 1522,
1200               1590">
1201
1202
1203 <h3> plain text
1204 <node> plain text
1205 <p>
1206 A textual data represented by only <dref>coded character set</dref>.
1207 It does not have information about font or typesetting.
1208 <cf node="text/plain">
1209
1210
1211 <h3> us-ascii
1212 <node> us-ascii
1213 <p>
1214 A <a node="MIME charset">MIME charset</a> for primary Latin script
1215 mainly written by English or other languages.
1216 <p>
1217 It is a 7bit <dref>coded character set</dref> based on <dref>ISO
1218 2022</dref>, it contains only
1219 <dref>ASCII</dref> and <dref>code extension</dref> is not allowed.
1220 <p>
1221 It is standard coded character set of Internet mail.  If MIME charset
1222 is not specified, <concept>us-ascii</concept> is used as default.
1223 <p>
1224 In addition, <concept>ASCII</concept> of <dref>RFC 822</dref> should
1225 be interpreted as us-ascii.
1226
1227
1228 <h2> How to report bugs
1229 <node> Bug report
1230 <p>
1231 If you write bug-reports and/or suggestions for improvement, please
1232 send them to the tm Mailing List:
1233
1234 <ul>
1235 <li> Japanese <mail>bug-tm-ja@chamonix.jaist.ac.jp</mail>
1236 <li> English <mail>bug-tm-en@chamonix.jaist.ac.jp</mail>
1237 </ul>
1238
1239 <p>
1240 Notice that, we do not welcome bug reports about too old version.
1241 Bugs in old version might be fixed.  So please try latest version at
1242 first.
1243 <p>
1244 You should write <concept>good bug report</concept>.  If you write
1245 only ``FLIM does not work'', we can not find such situations.  At
1246 least, you should write name, type, variants and version of OS, emacs,
1247 APEL, FLIM, SEMI and MUA, and setting.  In addition, if error occurs,
1248 to send backtrace is very important. <cf file="emacs" node="Bugs">
1249 <p>
1250 Bug may not appear only your environment, but also in a lot of
1251 environment (otherwise it might not bug).  Therefor if you send mail
1252 to author directly, we must write a lot of mails.  So please send mail
1253 to address for tm bugs instead of author.
1254
1255 <p>
1256 Via the tm ML, you can report FLIM bugs, obtain the latest release of
1257 FLIM, and discuss future enhancements to FLIM.  To join the tm ML,
1258 send empty e-mail to:
1259
1260 <ul>
1261 <li> Japanese <mail>tm-ja-help@chamonix.jaist.ac.jp</mail>
1262 <li> English  <mail>tm-en-help@chamonix.jaist.ac.jp</mail>
1263 </ul>
1264
1265
1266 <h2> CVS based development
1267 <node> CVS
1268 <p>
1269 FLIM \e$B$N\e(B file \e$B$O\e(B CVS \e$B$r;H$C$F4IM}$5$l$F$$$^$9!#$3$N$?$a!"0J2<$NJ}K!$G:G\e(B
1270 \e$B?7$N\e(B FLIM \e$B$rF~<j$9$k$3$H$,$G$-$^$9!'\e(B
1271
1272 <verb>
1273 (0) cvs login
1274
1275     % cvs -d :pserver:anonymous@chamonix.jaist.ac.jp:/hare/cvs/root \
1276         login
1277
1278     CVS password: [CR] # NULL string
1279
1280 (1) checkout
1281
1282     % cvs -d :pserver:anonymous@chamonix.jaist.ac.jp:/hare/cvs/root \
1283         checkout [-r TAG] flim
1284 </verb>
1285
1286 <p>
1287 CVS \e$B$rMQ$$$?3+H/$K;22C$7$?$$J}$O\e(B
1288
1289 <ul>
1290 <li> <mail>cvs@chamonix.jaist.ac.jp</mail>
1291 </ul>
1292
1293 <noindent>
1294 \e$B$^$G!"\e(Baccount \e$BL>$H\e(B UNIX \e$B$N\e(B passwd \e$B$HF1$87A<0$N\e(B crypt \e$B2=$5$l$?\e(B password
1295 \e$B$r1h$($F8fO"Mm$/$@$5$$!#\e(B
1296
1297
1298 <h2> History of FLIM
1299 <node> History
1300 <p>
1301 FLIM \e$B$N\e(B code \e$B$N:G8E$NItJ,$O\e(B \e$B1]JB\e(B \e$B;LCR\e(B \e$B;a$,=q$$$?\e(B <file>mime.el</file>
1302 \e$B$K5/8;$7$^$9!#$3$N>.$5$J\e(B program \e$B$O\e(B Nemacs \e$B$GF0:n$9$k\e(B iso-2022-jp \e$B$N\e(B 
1303 B-encoding \e$B@lMQ$N\e(B encoded-word \e$B$NI|9f2=%W%m%0%i%`$G$7$?!#\e(B
1304 <p>
1305 \e$B$=$N8e!"<i2,\e(B \e$BCNI'\e(B \e$B$O\e(B <file>mime.el</file> \e$B$r85$K\e(B
1306 <file>tiny-mime.el</file> \e$B$H$$$&%W%m%0%i%`$r=q$-$^$9!#$3$l$O!"\e(BNemacs 
1307 \e$B$H\e(B Mule \e$B$GF0:n$9$k\e(B encoded-word \e$B$NId9f2=!&I|9f2=%W%m%0%i%`$G$7$?!#\e(B
1308 <file>tiny-mime.el</file> \e$B$O\e(B B-encoding \e$B$@$1$G$J$/\e(B Q-encoding \e$B$b\e(B
1309 support \e$B$7!"$^$?!"\e(BMULE \e$B$G07$&$3$H$,$G$-$k$5$^$6$^$J\e(B <dref>MIME
1310 charset</dref> \e$B$rF1;~$K;H$&$3$H$,$G$-$^$7$?!#$3$N;~!"\e(BNemacs \e$B$H\e(B Mule \e$B$N\e(B
1311 \e$BAPJ}$r\e(B support \e$B$9$k$?$a$KMQ$$$i$l$?%F%/%K%C%/$O8e$K\e(B emu package \e$B$K$^$H\e(B
1312 \e$B$a$i$l$^$9!#\e(B
1313 <p>
1314 \e$B$3$N:"!"<i2,\e(B \e$BCNI'\e(B \e$B$O\e(B <file>tiny-mime.el</file> \e$B$r$5$^$6$^$J\e(B MUA \e$B$G;H$&\e(B
1315 \e$B$?$a$N@_Dj=8$bG[I[$7$F$$$^$7$?$,!"$=$l$i$O8e$K\e(B
1316 <file>tiny-mime.el</file> \e$B$H$H$b$K#1$D$N\e(B package \e$B$K$^$H$a$i$l!"\e(Btm \e$B$H$$\e(B
1317 \e$B$&L>A0$GG[I[$5$l$^$9!#\e(B
1318 <p>
1319 \e$B<i2,\e(B \e$BCNI'\e(B \e$B$O$d$,$F!"\e(BMIME message \e$B$r1\Mw$9$k$?$a$N%W%m%0%i%`$G$"$k\e(B
1320 <file>tm-body.el</file> \e$B$r=q$-$^$9!#$3$l$O!"$9$0$K\e(B
1321 <file>tm-view.el</file> \e$B$H$$$&L>A0$KJQ$o$j$^$7$?$,!"$d$,$F!"$3$l$,\e(B
1322 <file>tiny-mime.el</file> \e$B$KBe$o$C$F!"\e(Btm \e$B$NCf3K$H$J$j$^$9!#\e(B
1323 <p>
1324 <file>tm-view.el</file> \e$B$OEvA3!"\e(BContent-Transfer-Encoding \e$B$r07$&I,MW$,\e(B
1325 \e$B$"$j$^$9!#$3$NL\E*$N$?$a$K!"\e(BMEL \e$B$,@0Hw$5$l$O$8$a$^$7$?!#\e(BBase64 \e$B$K4X$7\e(B
1326 \e$B$F$O\e(B <file>tiny-mime.el</file> \e$B$N\e(B code \e$B$,0\$5$l!"$^$?!"?7$?$K\e(B
1327 Quoted-Printable \e$B$N\e(B code \e$B$,DI2C$5$l$^$7$?!#$3$l$i$,\e(B
1328 <file>mel-b.el</file> \e$B$H\e(B <file>mel-q.el</file> \e$B$K$J$j$^$7$?!#\e(B
1329 <p>
1330 \e$B$^$?!"8e$K!"<i2,\e(B \e$BCNI'\e(B \e$B$K$h$C$F\e(B uuencode \e$BMQ$N\e(B <file>mel-u.el</file> \e$B$,\e(B
1331 \e$BDI2C$5$l!"$=$N8e$K!">.NS\e(B \e$B=$J?\e(B \e$B;a$K$h$C$F\e(B x-gzip64 \e$BMQ$N\e(B
1332 <file>mel-g.el</file> \e$B$,DI2C$5$l$^$7$?!#\e(B
1333 <p>
1334 tm \e$B$G$O8e$K!"<i2,\e(B \e$BCNI'\e(B \e$B$K$h$C$F\e(B <file>tiny-mime.el</file> \e$B$N:F<BAu$,9T\e(B
1335 \e$B$o$l!"$3$N2aDx$G!"\e(BSTD 11 \e$B$N\e(B parser \e$B$,=q$+$l$^$7$?!#$3$l$O!"8=:_$N\e(B 
1336 <file>std11.el</file> \e$B$KEv$?$j$^$9!#$^$?!"$3$N2aDx$G\e(B 
1337 <file>tiny-mime.el</file> \e$B$OI|9f2=$r9T$&\e(B <file>tm-ew-d.el</file> \e$B$HId\e(B
1338 \e$B9f2=$r9T$&\e(B <file>tm-ew-e.el</file> \e$B$KJ,$1$i$l$^$7$?!#$3$NN><T$,8=:_$N\e(B 
1339 <file>eword-decode.el</file> \e$B$H\e(B <file>eword-encode.el</file> \e$B$N@hAD$K\e(B
1340 \e$BEv$?$j$^$9!#\e(B
1341 <p>
1342 \e$B8e$K!"<i2,\e(B \e$BCNI'\e(B \e$B$i$K$h$C$F\e(B tm \e$B$NA4LL=q$-49$(:n6H$,9T$o$l!"$3$N2aDx$G!"\e(B
1343 tm \e$B$O\e(B APEL, MEL, SEMI, EMH, RMAIL-MIME, Gnus-MIME \e$B$J$I$KJ,$1$i$l$^$7$?!#\e(B
1344 \e$B$3$N$&$A$N\e(B MEL \e$B$,\e(B FLIM \e$B$ND>@\$N@hAD$KEv$?$j$^$9!#\e(B
1345 <p>
1346 \e$B8e$K!"\e(BAPEL \e$B$+$i\e(B <file>std11.el</file> \e$B$,0\$5$l!"$^$?!"\e(B
1347 <file>mailcap.el</file>, <file>eword-decode.el</file> \e$B$*$h$S\e(B 
1348 <file>eword-encode.el</file> \e$B$,\e(B SEMI \e$B$+$i0\$5$l!"\e(Bpackage \e$B$NL>A0$,\e(B FLIM
1349 \e$B$H$J$j$^$9!#\e(B
1350 <p>
1351 \e$B$3$ND>A0$+$iEDCf\e(B \e$BE/\e(B \e$B;a$,$h$j\e(B RFC \e$B$KCi<B$J<BAu$r=q$-;O$a!"$3$l$O!"8=:_!"\e(B
1352 FLIM \e$B$N;^$G$"$k\e(B ``FLIM-FLAM'' \e$B$H$J$C$F$$$^$9!#\e(B
1353
1354
1355 <h1> Concept Index
1356 <node> Concept Index
1357
1358 <cindex>
1359
1360
1361 <h1> Function Index
1362 <node> Function Index
1363
1364 <findex>
1365
1366
1367 <h1> Variable Index
1368 <node> Variable Index
1369
1370 <vindex>
1371
1372 </body>