Browse files

initial import

  • Loading branch information...
0 parents commit 08e6952c908fc5c356b83f0abca52677221e8eab @trans trans committed Sep 26, 2007
Showing with 19,747 additions and 0 deletions.
  1. +1 −0 .cvsignore
  2. +411 −0 0ChangeLog
  3. +3 −0 BUGS
  4. +515 −0 COPYING
  5. +591 −0 ChangeLog
  6. +1 −0 DEPENDS
  7. +89 −0 Incompatibilities
  8. +102 −0 Incompatibilities.ja
  9. +60 −0 Makefile
  10. +9 −0 NEWS
  11. +46 −0 README.en
  12. +73 −0 README.ja
  13. +18 −0 TODO
  14. +258 −0 doc.en/address.html
  15. +17 −0 doc.en/basics.html
  16. +41 −0 doc.en/config.html
  17. +28 −0 doc.en/details.html
  18. +31 −0 doc.en/index.html
  19. +737 −0 doc.en/mail.html
  20. +256 −0 doc.en/mailbox.html
  21. +86 −0 doc.en/port.html
  22. +46 −0 doc.en/tmail.html
  23. +152 −0 doc.en/usage.html
  24. +268 −0 doc.ja/address.html
  25. +398 −0 doc.ja/basics.html
  26. +42 −0 doc.ja/config.html
  27. +139 −0 doc.ja/details.html
  28. +32 −0 doc.ja/index.html
  29. +786 −0 doc.ja/mail.html
  30. +258 −0 doc.ja/mailbox.html
  31. +88 −0 doc.ja/port.html
  32. +51 −0 doc.ja/tmail.html
  33. +195 −0 doc.ja/usage.html
  34. +229 −0 doc/address.rrd.m
  35. +275 −0 doc/basics.rd.m
  36. +26 −0 doc/config.rrd.m
  37. +117 −0 doc/details.rd.m
  38. +54 −0 doc/index.rhtml.m
  39. +701 −0 doc/mail.rrd.m
  40. +228 −0 doc/mailbox.rrd.m
  41. +69 −0 doc/port.rrd.m
  42. +33 −0 doc/tmail.rrd.m
  43. +247 −0 doc/usage.rd.m
  44. +25 −0 ext/tmail/Makefile
  45. +1 −0 ext/tmail/base64/.cvsignore
  46. +4 −0 ext/tmail/base64/MANIFEST
  47. +264 −0 ext/tmail/base64/base64.c
  48. +1 −0 ext/tmail/base64/depend
  49. +2 −0 ext/tmail/base64/extconf.rb
  50. +1 −0 ext/tmail/scanner_c/.cvsignore
  51. +4 −0 ext/tmail/scanner_c/MANIFEST
  52. +1 −0 ext/tmail/scanner_c/depend
  53. +2 −0 ext/tmail/scanner_c/extconf.rb
  54. +558 −0 ext/tmail/scanner_c/scanner_c.c
  55. +4 −0 lib/tmail.rb
  56. +3 −0 lib/tmail/.cvsignore
  57. +19 −0 lib/tmail/Makefile
  58. +222 −0 lib/tmail/address.rb
  59. +52 −0 lib/tmail/base64.rb
  60. +39 −0 lib/tmail/compat.rb
  61. +50 −0 lib/tmail/config.rb
  62. +447 −0 lib/tmail/encode.rb
  63. +895 −0 lib/tmail/header.rb
  64. +14 −0 lib/tmail/info.rb
  65. +1 −0 lib/tmail/loader.rb
  66. +869 −0 lib/tmail/mail.rb
  67. +386 −0 lib/tmail/mailbox.rb
  68. +1 −0 lib/tmail/mbox.rb
  69. +260 −0 lib/tmail/net.rb
  70. +122 −0 lib/tmail/obsolete.rb
  71. +1,475 −0 lib/tmail/parser.rb
  72. +372 −0 lib/tmail/parser.y
  73. +356 −0 lib/tmail/port.rb
  74. +22 −0 lib/tmail/scanner.rb
  75. +243 −0 lib/tmail/scanner_r.rb
  76. +256 −0 lib/tmail/stringio.rb
  77. +197 −0 lib/tmail/textutils.rb
  78. +1 −0 lib/tmail/tmail.rb
  79. +23 −0 lib/tmail/utils.rb
  80. +23 −0 sample/data/multipart
  81. +29 −0 sample/data/normal
  82. +5 −0 sample/data/sendtest
  83. +14 −0 sample/data/simple
  84. +27 −0 sample/data/test
  85. +33 −0 sample/extract-attachements.rb
  86. +26 −0 sample/from-check.rb
  87. +26 −0 sample/multipart.rb
  88. +68 −0 sample/parse-bench.rb
  89. +19 −0 sample/parse-test.rb
  90. +94 −0 sample/sendmail.rb
  91. +1,331 −0 setup.rb
  92. +6 −0 test/extctrl.rb
  93. +14 −0 test/kcode.rb
  94. +1,115 −0 test/testaddress.rb
  95. +63 −0 test/testbase64.rb
  96. +77 −0 test/testencode.rb
  97. +786 −0 test/testheader.rb
  98. +436 −0 test/testmail.rb
  99. +126 −0 test/testmbox.rb
  100. +430 −0 test/testport.rb
Sorry, we could not display the entire diff because it was too big.
1 .cvsignore
@@ -0,0 +1 @@
+doc.*
411 0ChangeLog
@@ -0,0 +1,411 @@
+= ChangeLog
+
+== 0.10.4 (2002-05-17)
+ * Maildir ��ư���Ƥ��ʤ��ä�
+ * Maildir#each_port ���Ϥ��ե����뤬̾��ǥ����Ȥ���Ƥ����Τ�
+ ���ֽ�ˤʤ�褦�ˤ���
+ (patched by Kukutani, Makoto)
+ * ��� Return-Path �����ʤ��褦�ˤ���
+ (reported by Morikawa-san)
+e
+ * Maildir did not work correctly.
+ * Maildir#each_port yields filenames sorted by time, not filename.
+ (patched by Kukutani, Makoto)
+ * allows empty return path (Return-Path: <>).
+ (reported by Morikawa-san)
+
+== 0.10.3 (2002-05-07)
+ * �С������ 1.0 �Ǻ���ͽ��Υ᥽�åɤ� obsolete.rb �ˤޤȤ᤿��
+ ����� require ���ʤ����Ȥ� 1.0 �ε�ư��ƥ��ȤǤ��롣(�ǥե���ȤǤ� require ����)
+ * Mail �� set �ϥ᥽�åɤۤȤ�ɤ��Х��Τ���ư���ʤ��ä�
+ * �������᥽�å� MhMailbox,UNIXMbox,Maildir#reverse_each_port
+ (suggested by Takabayashi, Satoru)
+ * �ɥ�����Ȥˤ��� TMail::Mail#content_type ��������Ƥ��ʤ��ä�
+ (reported by yoshihisa masuda)
+ * Content-Type �� main/sub �Τ��Ȥ� ';' ���褦�ˤ���
+ (suggested by Lars Christensen)
+ * Mutt �κ�� Maildir �ե������ѡ����Ǥ��ʤ��ä�
+ * �ޥ��ѡ��ȥ᡼�뤬��ü����Ƥ��ʤ��Ȥ���to_s ������
+ (reported by Kikutani, Makoto)
+e
+ * devide obsolete methods into obsolete.rb.
+ * Mail#to=, cc=, bcc=, ... did not work.
+ * new methods MhMailbox,UNIXMbox,Maildir#reverse_each_port
+ (suggested by Takabayashi, Satoru)
+ * TMail::Mail#content_type is described in document but not defined.
+ (reported by yoshihisa masuda)
+ * allow ';' after content type.
+ (suggested by Lars Christensen)
+ * TMail::Maildir fails to parse maildir filename created by Mutt.
+ * Unterminted multipart mail causes unexpected exception.
+ (reported by Kikutani, Makoto)
+
+== 0.10.2 (2002-02-21)
+ * UnstructuredHeader#to_s ���������� (patched by Satoru Takabayashi)
+ * ReceivedHeader �ǡ�via ������Τ� by ���ʤ��Ȥ���
+ �ޤ��Ϥ��εդΤȤ��˷�̤����������ʤ�Х����
+ (patched by Satoru Takabayashi)
+ * TMail::TextUtils.quote_phrase ���������� (reported by Matt Armstrong)
+e
+ * UnstructuredHeader#to_s did not work. (patched by Satoru Takabayashi)
+ * ReceivedHeader#to_s did not work when h.via exists and
+ h.by not exists (and vice versa). (patched by Satoru Takabayashi)
+ * TMail::TextUtils.quote_phrase did not work. (reported by Matt Armstrong)
+
+== 0.10.1 (2002-02-03)
+ * �ƥ��ȥ�����ץȤ�ѥå��������ɲá��᡼�륢�ɥ쥹�Υѡ�����
+ �ؤ���ƥ��ȥ�����ץȤ�����ʬ�� RubyMail 0.2 (by Matt Armstrong)
+ �����餤�ޤ�����
+ * ���������饹 TMail::Config
+ * �٤����ѡ����ΥХ��򤿤�����ľ����
+ * ������������ JIS ʸ������褦�ˤ���
+ * TMail::File*Stream �Ϻ�� (�̾�� File ���֤�������)��
+e
+ * test scripts added. Many test cases are imported
+ from RubyMail 0.2, written by Matt Armstrong.
+ * new class TMail::Config
+ * Minor parser bugs are eliminated.
+ * Parser supports raw iso2022jp strings appeared in quoted-words.
+ * TMail::File*Stream classes removed.
+
+== 0.10.0 (2002-01-06)
+ * �����Ĥ���ߴ����ѹ���ä�����
+ �ܺ٤ϥե����� Incompatibilities �򻲾ȤΤ��ȡ�
+ * amstd strscan ��Ȥ��Τ��᤿
+ * mail.so �� 1.7 �ǿ��Ǥ� (����ʤ�ư����) ���äȴ�
+e
+ * changes many method features of TMail::Mail. see file Incompatibilities.
+ * TMail does not depend on amstd/strscan library.
+ * mails.so was riskful under latest 1.7
+
+== 0.9.9 (2001-11-15)
+ * typo in tmail_attr_writer (patched by Shirai, Kaoru)
+e
+ * typo in tmail_attr_writer (patched by Shirai, Kaoru)
+
+== 0.9.8 (2001-09-07)
+ * �ְ�ä� 0.9.7 �Υ��������֤��񤭤��Ʋ�Ƥ��ΤǤ��κƽ��
+ (thanks Masahiro Sekiya, Joseph McDonald)
+ * amstd/futils ���� fileutils �˰ܹ�
+ * ���󥹥ȡ���� setup.rb ���� install.rb (3.0.0) �˰ܹ�
+e
+ * modify 0.9.7(2) pack miss.
+ (thanks Masahiro Sekiya, Joseph McDonald)
+ * amstd/futils -> fileutils
+ * setup.rb -> install.rb 3.0.0
+
+== 0.9.7 (2001-07-06)
+ * HeaderField#body ����������
+ * Mail ���饹�Υɥ�����Ȥ�Ʊ��
+e
+ * modify bug in HeaderField#body
+ * sync TMail::Mail class reference manual
+
+== 0.9.6 (2001-06-20)
+ * �������⥸�塼�� TMail::Base64
+ * �ǥե���ȤǤ����Τβ��ԥ������Ѵ���Ԥ�ʤ�
+e
+ * new module TMail::Base64
+ * does not convert line terminator by default.
+
+== 0.9.5 (2001-05-27)
+ * �إå���󥳡��ɤ� fold ����ȶ��򤬾ä���Х���� (thanks Akira Yamada)
+ * RFC2231 ��Ⱦʬ�б� (fold ���б����Ƥʤ�) (thanks Yasuhiro Arima)
+e
+ * spaces were too removed when folding (thanks Akira Yamada)
+ * support RFC2231 (still imcomplete) (reported by Yasuhiro Arima)
+
+== 0.9.4 (2001-04-25)
+ * ���󥹥ȡ���򥢥åץǡ���
+ * Mail.load
+ * Mail#strftime
+ * Ruby 1.4 ���б�
+e
+ * update installer
+ * Mail.load
+ * Mail#strftime
+ * supports Ruby 1.4 again
+
+== 0.9.3 (2001-03-10)
+ * ���󥹥ȡ���򥢥åץǡ���
+ * TMail::Mail.boundary �Υɥ�����Ȥ��ĤäƤ�
+ (TMail.new_boundary �˰ܹ�)
+ * �إå�κǸ�˲��Ԥ��ʤ������θ
+e
+ * update installer
+ * remove TMail::Mail.boundary,msgid from document
+ (use TMail.new_boundary, new_msgid)
+ * no need of NL at the tail of header
+
+== 0.9.2 (2001-03-08)
+ * HF#inspect��Address#inspect ��ư����ѹ�
+ * Ruby �С������Υ�����ʤ� KCODE ��ưŪ�б�������
+ * �饤�֥��Υ���ȥ�ݥ���Ȥ� 'tmail' ���ѹ�
+ ('tmail/tmail' ��Ȥ��뤬 1.0 ������Ǥʤ�������)
+e
+ * HF#inspect, Address#inspect changed
+ * support SJIS in scanner
+ * library entry point is 'tmail' again (<- 'tmail/tmail')
+
+== 0.9.1 (2001-03-02)
+ * �ޥ��ѡ��ȤΥѡ����˥Х�
+e
+ * bug in parsing MIME multipart
+
+== 0.9.0 (2001-02-24)
+ * to_s, inspect ��ư���ѹ�
+ * Mail#to, from �ʤɤΥǥե�����ͤ� '' ���� nil ���ѹ�
+e
+ * change Mail#to_s/inspect action
+ * default value of Mail#to, from is now nil (not '')
+
+
+== 0.8.18 (2001-01-27)
+ * push �˰��Τʤ��Ȥ������ä�
+ * Array#filter ��Ȥ�ʤ��褦�ˤ���
+ (thanks l@kondara)
+e
+ * modify push without arg
+ * do not use Array#filter
+ (thanks l@kondara)
+
+== 0.8.17 (2001-01-26)
+ * ���ܸ�ʸ��Υ��󥳡��ɤ�����Х���� (thanks �����)
+e
+ * modify MIME encoding bug
+
+== 0.8.16 (2001-01-22)
+ * mails.so �򥹥��ƥ��å���󥯤Ǥ�����פʤ褦�˽��
+e
+ * modify mails.so for static link
+
+== 0.8.15 (2000-11-28)
+ * HFencoder �ΥХ���� (thanks ��Ľ��㤵��)
+e
+ * debug HFencoder (thanks Shugo Maeda)
+
+== 0.8.14 (2000-11-18)
+ * DateH#date= �˥Х� (thanks ��Ľ��㤵��)
+ * StringH ��ǥ����ɤ���� EOL ��ä��Ƥ��� nkf ���Ϥ�
+ * Mail#ordered_each
+ * eof �λ� StringPort#read_all��copy_to �����Ԥ���
+e
+ * bug in DateH#date= (thanks Shugo Maeda)
+ * gsub(EOL, '') before nkf
+ * Mail#ordered_each
+ * StringPort#read_all, copy_to failed if eof
+
+== 0.8.13 (2000-09-19)
+ * MboxLoader ��ư���ʤ��ä� (thanks Ĺ���󤵤�)
+ * HeaderField#new_header
+e
+ * MboxLoader was not work (reported by Kenji Nagasawa)
+ * HeaderField#new_header
+
+== 0.8.12 (2000-07-13)
+ * scanner.rb �ΰ�ư���б� (thanks ��ޤ�����餵��)
+e
+ * racc/scanner.rb -> scanner.rb (thanks akira yamada)
+
+== 0.8.11 (2000-05-29)
+ * HFencoder#value �Υ��󥳡�����ʬ���ְ�äƤ�
+ * TMail::CONTROL
+ * ���ܸ�ޥ˥奢�뤬�Ѹ�ˤʤäƤ��� (�㡣thanks ��Ӥ������)
+e
+ * HFencoder#value encoding was wrong
+ * TMail::CONTROL
+ * all doc.ja/*.html were ENGLISH (reported by rubikitch)
+
+== 0.8.10 (2000-05-18)
+ * TMail.zonestr2i ���֤��ͤ��ְ�äƤ��� (thanks ����Ī�Τ���)
+ * datetime ���ä��ΤƤ��Ƥ���
+e
+ * return values of TMail.zonestr2i was wrong (patched by tachino Nobuhiro)
+ * seconds in date-time was wrongly discarded
+
+== 0.8.9 (2000-05-16)
+ * ���󥹥ȡ���Υ��åץǡ��ȤȽ��
+ (thanks rubikitch)
+e
+ * update installer
+ (thanks rubikitch)
+
+== 0.8.8 (2000-05-12)
+ * sample/sendmail
+ * TMail#date=, mime_version=
+ * phrase �Υ������Ȥ��
+ * amstd ���åץǡ��� (1.7.0)
+e
+ * sample/sendmail
+ * TMail#date=, mime_version=
+ * modify phrase quoting
+ * update amstd package (1.7.0)
+
+== 0.8.7 (2000-05-08)
+ * mails.rb: = ����ʤ��� ==
+ (thanks rubikitch)
+ * Racc ��󥿥��ॢ�åץǡ��� (1.0)
+ * amstd ���åץǡ��� (1.6.2)
+e
+ * mails.rb: not =, ==
+ (thanks rubikitch)
+ * update Racc runtime (1.0)
+ * update amstd package (1.6.2)
+
+== 0.8.6 (2000-03-17)
+ * Racc ��󥿥��ॢ�åץǡ��� (0.12)
+ * strscan ���åץǡ��� (0.5.5)
+e
+ * update Racc runtime (0.12)
+ * update strscan package (0.5.5)
+
+== 0.8.5 (2000-03-09)
+ * accept ���ޥ��ѡ��Ȥλ��Ѥˤʤ�Х����
+ * HeaderField#illegal?, empty?
+ * ��̿Ū�ʤȤ��������åɤ��б�����
+e
+ * Mail#accept had bug when multipart
+ * HeaderField#illegal?, empty?
+ * thread safe (only critical part)
+
+== 0.8.4 (2000-03-09)
+ * ruby 1.5 �Ǥ� Symbol Ƴ�����б�
+e
+ * for Symbol in ruby 1.5
+
+== 0.8.3 (2000-03-04)
+ * Address#local,domain
+ * phrase��value �ʤɤ�ʸ���󲽤���٤�������
+e
+ * Address#local,domain
+ * better string convertion
+
+== 0.8.2 (2000-02-23)
+ * FilePort#filename �� public
+e
+ * FilePort#filename is public
+
+== 0.8.1 (2000-02-20)
+ * ���ɥ쥹���ʤ����Ǥ� Mail#to,from �ʤɤ����ʤ��褦���
+e
+ * modify Mail#to, from... for no addresses
+
+== 0.8.0 (2000-02-19)
+ * ��ƤΥ��饹�� TMail �⥸�塼���������
+ * ������ʤ��ĥ�⥸�塼��ˤ���
+ * TMail::Mail#body_port
+ * TMail::Mail#encoded, decoded
+ * �إå��ʸ���󲽥����ƥब�礭���Ѥ�ä�
+e
+ * moves all classes into module TMail
+ * make scanner ruby extention
+ * TMail::Mail#body_port
+ * TMail::Mail#encoded, decoded
+
+
+== 0.7.5 (2000-01-09)
+ * Racc �κǿ��С��������б�
+e
+ * modify for racc 0.10.8
+
+== 0.7.4 (1999-11-10)
+ * ���ΤߤΥ�������Ȥ��Ѥˤʤ�
+ * inspect ���ޤ��Х��äƤ�
+ * port.rb �� typo
+ * amstd ���б� (must.rb -> amstd/must.rb)
+ (all modifications are patched by Shugo Maeda)
+e
+ * digit only account was wrong handled
+ * TMail#inspect contained bug
+ * type in port.rb
+ * amstd (must.rb -> amstd/must.rb)
+ (all modifications are patched by Shugo Maeda)
+
+== 0.7.3 (1999-11-06)
+ * �ۥ���̾�ʤ��Υ��ɥ쥹���̤��褦�˽�� (thanks ts ����)
+ * �ե������ǥ��쥯�ȥ�����줿 (tmail.rb -> tmail/tmail.rb)
+ * racc 0.10 ���б�
+ * �ѥå������󥰤����ʤ��Ѳ�
+e
+ * parse error on address without hostname (patched by ts)
+ * main files are in tmail/ (tmail.rb -> tmail/tmail.rb)
+ * modified for racc 0.10
+ * wrote setup.rb
+
+== 0.7.2 (1999-09-29)
+ * �����ॾ�����Ϣ�ΥХ����
+ * Received: ���ҤȤĤ���ˤʤäƤ��ޤ��Х����
+ * to_s ����������Х����Ƥ��Τ�� (thanks ��Ľ��㤵��)
+e
+ * about timezone
+ * multi Received: handling was wrong
+ * to_s contains bugs (patched by Shugo Maeda)
+
+== 0.7.1 (1999-09-28)
+ * �٤����Х����
+ * �ɥ�����Ȥι�����˺��Ƥ�
+ * �����Ȥ�Ȥ�����褦�ˤ���
+e
+ * modify little bugs
+ * update documents
+ * can handle comments for structured header
+
+== 0.7.0 (1999-09-02)
+ * �إå���֥������Ȥ��ٱ���
+ * mailp.y: FROM VIA �ʤɤ� ATOM �Ȥ���ɾ�����褦�ˤ�����atom �ɲ�
+e
+ * lazy header contruction
+
+
+== 0.6.0 (1999-07-31)
+ * �����Ϥ� port.rb �˰��ܲ�
+e
+ * use port.rb
+
+== 0.5.2 (1999-06-26)
+ * strscan ���б�
+ * buffer.rb ���� extiter.rb �����
+e
+ * use strscan
+ * use extiter.rb, not buffer.rb
+
+== 0.5.1 (1999-06-14)
+ * mailp.y �� Racc 0.9 ���б�
+ * ��̵��DZѸ�ޥ˥奢���Ĥ���
+e
+ * rewrite mailp.y for racc0.9.x
+ * wrote English manual
+
+== 0.5.0 (1999-06-03)
+ * Header ���饹���ѻ�
+ * recycle.rb buffer.rb �����
+e
+ * now Header class is obsolute
+ * use recycle.rb, buffer.rb
+
+
+== 0.4.8 (1999-05-?)
+ * �ѡ�������٤�����
+ * �����ץߥ��ʤɤ򤤤��Ĥ����
+e
+ * modify mail parser
+ * modify some typos
+
+
+== 0.3.0 (?)
+
+
+== 0.2.0 (1998-10-30)
+ * �ޤ� mail modules �ȸƤФ�Ƥ���
+e
+ * still named "Mail Modules"
+
+
+== 0.1.0 (1998-10-26)
+.
+ * bug fix
+
+
+== 0.0.0 (1998-10-23)
+.
+ * first release
3 BUGS
@@ -0,0 +1,3 @@
+* mails may be deleted if other precesses are touching mailbox.
+* mails may be corrupted if other precesses are touching mailbox.
+* not thread safe
515 COPYING
@@ -0,0 +1,515 @@
+
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL. It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+ This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it. You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations
+below.
+
+ When we speak of free software, we are referring to freedom of use,
+not price. Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+ To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights. These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+ For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you. You must make sure that they, too, receive or can get the source
+code. If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it. And you must show them these terms so they know their rights.
+
+ We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+ To protect each distributor, we want to make it very clear that
+there is no warranty for the free library. Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+^L
+ Finally, software patents pose a constant threat to the existence of
+any free program. We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder. Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+ Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License. This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License. We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+ When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library. The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom. The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+ We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License. It also provides other free software developers Less
+of an advantage over competing non-free programs. These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries. However, the Lesser license provides advantages in certain
+special circumstances.
+
+ For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it
+becomes
+a de-facto standard. To achieve this, non-free programs must be
+allowed to use the library. A more frequent case is that a free
+library does the same job as widely used non-free libraries. In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+ In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software. For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+ Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+ The precise terms and conditions for copying, distribution and
+modification follow. Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library". The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+^L
+ GNU LESSER GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+ A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+ The "Library", below, refers to any such software library or work
+which has been distributed under these terms. A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language. (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+ "Source code" for a work means the preferred form of the work for
+making modifications to it. For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control
+compilation
+and installation of the library.
+
+ Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it). Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+ 1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+ You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+ 2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) The modified work must itself be a software library.
+
+ b) You must cause the files modified to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ c) You must cause the whole of the work to be licensed at no
+ charge to all third parties under the terms of this License.
+
+ d) If a facility in the modified Library refers to a function or a
+ table of data to be supplied by an application program that uses
+ the facility, other than as an argument passed when the facility
+ is invoked, then you must make a good faith effort to ensure that,
+ in the event an application does not supply such function or
+ table, the facility still operates, and performs whatever part of
+ its purpose remains meaningful.
+
+ (For example, a function in a library to compute square roots has
+ a purpose that is entirely well-defined independent of the
+ application. Therefore, Subsection 2d requires that any
+ application-supplied function or table used by this function must
+ be optional: if the application does not supply it, the square
+ root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library. To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License. (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.) Do not make any other change in
+these notices.
+^L
+ Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+ This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+ 4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+ If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library". Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+ However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library". The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+ When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library. The
+threshold for this to be true is not precisely defined by law.
+
+ If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work. (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+ Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+^L
+ 6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+ You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License. You must supply a copy of this License. If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License. Also, you must do one
+of these things:
+
+ a) Accompany the work with the complete corresponding
+ machine-readable source code for the Library including whatever
+ changes were used in the work (which must be distributed under
+ Sections 1 and 2 above); and, if the work is an executable linked
+ with the Library, with the complete machine-readable "work that
+ uses the Library", as object code and/or source code, so that the
+ user can modify the Library and then relink to produce a modified
+ executable containing the modified Library. (It is understood
+ that the user who changes the contents of definitions files in the
+ Library will not necessarily be able to recompile the application
+ to use the modified definitions.)
+
+ b) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (1) uses at run time a
+ copy of the library already present on the user's computer system,
+ rather than copying library functions into the executable, and (2)
+ will operate properly with a modified version of the library, if
+ the user installs one, as long as the modified version is
+ interface-compatible with the version that the work was made with.
+
+ c) Accompany the work with a written offer, valid for at
+ least three years, to give the same user the materials
+ specified in Subsection 6a, above, for a charge no more
+ than the cost of performing this distribution.
+
+ d) If distribution of the work is made by offering access to copy
+ from a designated place, offer equivalent access to copy the above
+ specified materials from the same place.
+
+ e) Verify that the user has already received a copy of these
+ materials or that you have already sent this user a copy.
+
+ For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it. However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+ It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system. Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+^L
+ 7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+ a) Accompany the combined library with a copy of the same work
+ based on the Library, uncombined with any other library
+ facilities. This must be distributed under the terms of the
+ Sections above.
+
+ b) Give prominent notice with the combined library of the fact
+ that part of it is a work based on the Library, and explaining
+ where to find the accompanying uncombined form of the same work.
+
+ 8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License. Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License. However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+ 9. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Library or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+ 10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+^L
+ 11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all. For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply, and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License
+may add an explicit geographical distribution limitation excluding those
+countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation. If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+^L
+ 14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission. For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this. Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+ NO WARRANTY
+
+ 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+^L
+ How to Apply These Terms to Your New Libraries
+
+ If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change. You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms
+of the ordinary General Public License).
+
+ To apply these terms, attach the following notices to the library.
+It is safest to attach them to the start of each source file to most
+effectively convey the exclusion of warranty; and each file should
+have at least the "copyright" line and a pointer to where the full
+notice is found.
+
+
+ <one line to give the library's name and a brief idea of what it
+does.>
+ Copyright (C) <year> <name of author>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+Also add information on how to contact you by electronic and paper
+mail.
+
+You should also get your employer (if you work as a programmer) or
+your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the
+ library `Frob' (a library for tweaking knobs) written by James
+Random Hacker.
+
+ <signature of Ty Coon>, 1 April 1990
+ Ty Coon, President of Vice
+
+That's all there is to it!
+
+
591 ChangeLog
@@ -0,0 +1,591 @@
+Fri Feb 20 09:37:34 2004 Minero Aoki <aamine@loveruby.net>
+
+ * version 0.10.8 released.
+
+Fri Feb 20 09:34:40 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/tmail/*.rb, ext/**/*.c: Lesser GPL is LGPL 2.1.
+
+ * lib/tmail/*.rb, ext/**/*.c: update Copyright year.
+
+Fri Feb 20 09:33:42 2004 Minero Aoki <aamine@loveruby.net>
+
+ * Makefile: new target `import'.
+
+ * Makefile (dist): exectest.rb is useless now because tests do not
+ use runit.
+
+ * Makefile (dist): remove web/.
+
+Fri Feb 20 09:31:58 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/tmail/stringio.rb: import amstd/stringio.rb rev 1.12.
+
+Fri Feb 20 09:16:20 2004 Minero Aoki <aamine@loveruby.net>
+
+ * NEWS: new file.
+
+Fri Feb 20 09:02:35 2004 Minero Aoki <aamine@loveruby.net>
+
+ * Makefile (clean): cleans doc.*.
+
+Fri Feb 20 09:02:03 2004 Minero Aoki <aamine@loveruby.net>
+
+ * doc/*.rrd.m: use 'a|b' to expressing "type a or b".
+
+Fri Feb 20 08:57:24 2004 Minero Aoki <aamine@loveruby.net>
+
+ * doc/*.rrd.m: ( arg ) -> (arg).
+
+Fri Feb 20 08:49:09 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/tmail/mailbox.rb: require 'tmail/textutils' to be
+ independent.
+
+Fri Feb 20 08:35:00 2004 Minero Aoki <aamine@loveruby.net>
+
+ * Makefile: version 0.10.8.
+
+ * ext/tmail/scanner_c/scanner_c.c: ditto.
+
+ * lib/tmail/info.rb: ditto.
+
+ * lib/tmail/scanner_r.rb: ditto.
+
+Fri Feb 20 08:34:00 2004 Minero Aoki <aamine@loveruby.net>
+
+ * test/testbase64.rb: moved from ext/tmail/base64.
+
+Mon Nov 3 18:37:46 2003 Minero Aoki <aamine@loveruby.net>
+
+ * ext/tmail/base64/base64.c: eliminate cc warning.
+
+ * ext/tmail/base64/base64.c: use StringValue instead of
+ rb_str2cstr if exists.
+
+Mon Nov 3 18:36:15 2003 Minero Aoki <aamine@loveruby.net>
+
+ * Makefile: replace `make' with $(MAKE) macro.
+
+ * Makefile: new target `clean'.
+
+ * ext/tmail/Makefile: replace `make' with $(MAKE) macro.
+
+ * ext/tmail/Makefile: new target `clean', `distclean'.
+
+ * lib/tmail/Makefile: add header.
+
+Mon Nov 3 18:34:12 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/tmail/port.rb: #filename -> #path (alias filename)
+
+ * lib/tmail/port.rb: @filename -> @path
+
+ * lib/tmail/port.rb (copy_file): simplify.
+
+ * lib/tmail/port.rb: apply latest coding style.
+
+Sun Oct 12 12:50:35 2003 Minero Aoki <aamine@loveruby.net>
+
+ * Makefile: new target "test".
+
+Sun Oct 12 12:46:02 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/tmail/textutils.rb: @uniq -> @@uniq, to allow including
+ TextUtils.
+
+ * test/testtextutils.rb: new file.
+
+ * test/testtextutils.rb: test TextUtils#new_boundary.
+
+Thu Oct 9 05:10:51 2003 Brian F. Feldman <green@FreeBSD.org>
+
+ * mailbox.rb (fromaddr): should take parameter.
+
+ * header.rb (new_from_port): modify typo.
+
+Fri Sep 12 16:54:07 2003 Minero Aoki <aamine@loveruby.net>
+
+ * sample/sendmail.rb (setup_mail): small refactoring.
+
+Fri Sep 12 16:48:49 2003 Minero Aoki <aamine@loveruby.net>
+
+ * sample/extract-attachments.rb: new file.
+
+Fri Sep 12 16:23:46 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/tmail/mailbox.rb (UNIXMbox): should be able to trancate mbox
+ file. The patch is contributed by Brian Fundakowski.
+
+Thu Aug 28 16:52:55 2003 Minero Aoki <aamine@loveruby.net>
+
+ * Makefile: install.rb -> setup.rb
+
+Tue Aug 12 09:20:05 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/tmail/mail.rb ([]=): raise BadMessage if multiple headers
+ set.
+
+Thu Aug 7 18:52:10 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/tmail/mail.rb (read_multipart): return if the message have
+ not boundary. [ruby-list:38050]
+
+ * test/testmail.rb: test it.
+
+Thu Aug 7 18:50:46 2003 Minero Aoki <aamine@loveruby.net>
+
+ * doc/mailbox.rrd.m: adjust header level.
+
+ * doc/port.rrd.m: ditto.
+
+Sat Aug 2 21:43:16 2003 Minero Aoki <aamine@loveruby.net>
+
+ * doc/address.rrd.m: use new ReferenceRD type designator.
+
+ * doc/config.rrd.m: ditto.
+
+ * doc/mail.rrd.m: ditto.
+
+ * doc/mailbox.rrd.m: ditto.
+
+ * doc/port.rrd.m: ditto.
+
+ * doc/tmail.rrd.m: ditto.
+
+Tue Jun 24 03:12:24 2003 Minero Aoki <aamine@as600.loveruby.net>
+
+ * lib/tmail/Makefile: rm -> rm -f.
+
+ * lib/tmail/Makefile: BSD make does not accept $<.
+
+Wed May 21 16:10:56 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/tmail/mail.rb (set_disposition): tested.
+
+ * lib/tmail/textutils.rb: new const RFC2231_UNSAFE
+
+ * lib/tmail/encode.rb (encode_value): use RFC2231_UNSAFE.
+
+ * lib/tmail/encode.rb (encode_value): encoded hex must use capital
+ A-F.
+
+ * test/testmail.rb: new method #test_set_disposition.
+
+ * test/testheader.rb: typo: attached -> attachment
+
+ * test/testheader.rb: test RFC2231 decoding.
+
+Mon May 19 07:34:01 2003 Minero Aoki <aamine@loveruby.net>
+
+ * sample/sendmail.rb: rewritten.
+
+Mon May 19 06:36:41 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/tmail/mail.rb: include facade.rb.
+
+ * lib/tmail/facade.rb: removed.
+
+ * lib/tmail/utils.rb: move TextUtils modules in to
+ tmail/textutils.rb.
+
+ * lib/tmail/textutils.rb: new file.
+
+ * lib/tmail/encode.rb: tmail/utils -> tmail/textutils
+
+ * lib/tmail/header.rb: ditto.
+
+ * lib/tmail/parser.y: ditto.
+
+ * lib/tmail/scanner.rb: ditto.
+
+ * lib/tmail/obsolete.rb: obsolete Mail.loadfrom, load_from.
+
+ * lib/tmail/obsolete.rb: Mail#from_address is not obsolete.
+
+Mon May 19 06:22:06 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/tmail/Makefile: new task `clean' and `distclean'.
+ [ruby-list:37687]
+
+ * ext/tmail/Makefile: ditto.
+
+Sun May 18 03:02:57 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/tmail/Makefile: change racc log file name.
+
+Sun May 18 03:01:27 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/tmail/parser.y: remove useless (last added) rule
+ `received_spec'.
+
+Sun May 18 03:00:16 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/tmail/parser.y (local): allow "foo.bar." and "foo..bar".
+
+ * lib/tmail/address.rb: allow empty "word".
+
+ * lib/tmail/address.rb (local): return '""' on empty local.
+
+ * test/testaddress.rb (test_parse__dot): test "foo.bar." and
+ "foo..bar".
+
+ * test/testaddress.rb (test_parse__outofspec): Now empty local is
+ legal.
+
+Sun May 18 02:56:07 2003 Minero Aoki <aamine@loveruby.net>
+
+ * Makefile (dist): version tag is like V1-2-3 ('_' -> '-')
+
+Sun May 18 02:04:34 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/tmail/info.rb: update version.
+
+ * lib/tmail/scanner_r.rb: ditto.
+
+ * ext/tmail/scanner_c/scanner_c.c: ditto.
+
+Sun May 18 02:03:42 2003 Minero Aoki <aamine@loveruby.net>
+
+ * Makefile: new task `update'.
+
+ * Makefile (dist): export selected version.
+
+Sun May 18 01:00:47 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/tmail/Makefile: fix quoting bug.
+
+Sun May 18 00:56:24 2003 Minero Aoki <aamine@loveruby.net>
+
+ * Makefile: define DEBUG=true on local compilation.
+
+ * lib/tmail/Makefile: add debug options if defined(DEBUG)
+
+Sun May 18 00:47:26 2003 Minero Aoki <aamine@loveruby.net>
+
+ * Makefile: put install.rb into packages.
+
+ * Makefile: put COPYING into packages.
+
+Sun May 18 00:44:28 2003 Minero Aoki <aamine@loveruby.net>
+
+ * Makefile: create lib/tmail/parser.rb before packing.
+
+ * lib/tmail/Makefile: use racc -E.
+
+Sun May 18 00:36:56 2003 Minero Aoki <aamine@loveruby.net>
+
+ * test/kcode.rb: "class RUNIT::TestCase" syntax is 1.8 feature.
+
+Sun May 18 00:28:22 2003 Minero Aoki <aamine@loveruby.net>
+
+ * Makefile: new task `doc'.
+
+ * Makefile: new task `site'.
+
+ * doc/index.html.m -> doc/index.rhtml.m
+
+Sat May 17 23:54:22 2003 Minero Aoki <aamine@loveruby.net>
+
+ * Remake: removed.
+
+Sat May 17 20:50:43 2003 Minero Aoki <aamine@loveruby.net>
+
+ * doc/address.rrd.m: add 'j' and '.' mark explicitly.
+
+ * doc/basics.rd.m: ditto.
+
+ * doc/config.rrd.m: ditto.
+
+ * doc/details.rd.m: ditto.
+
+ * doc/index.html.m: ditto.
+
+ * doc/mail.rrd.m: ditto.
+
+ * doc/mailbox.rrd.m: ditto.
+
+ * doc/port.rrd.m: ditto.
+
+ * doc/tmail.rrd.m: ditto.
+
+ * doc/usage.rd.m: ditto.
+
+Sat May 17 20:48:34 2003 Minero Aoki <aamine@loveruby.net>
+
+ * Makefile: cvs export option was wrong.
+
+Sat May 17 20:37:23 2003 Minero Aoki <aamine@loveruby.net>
+
+ * rename doc/* -> doc/*.m
+
+Sat May 17 20:13:40 2003 Minero Aoki <aamine@loveruby.net>
+
+ * Makefile: wrote .PHONY.
+
+ * ext/tmail/Makefile: wrote .PHONY.
+
+Fri May 16 22:55:52 2003 Minero Aoki <aamine@loveruby.net>
+
+ * Makefile: remove useless old code.
+
+ * lib/tmail/Makefile: new file.
+
+ * lib/tmail/stringio.rb: imported from amstd.
+
+ * ext/tmail/Makefile: new file.
+
+Fri May 16 22:27:28 2003 Minero Aoki <aamine@loveruby.net>
+
+ * .cvsignore -> lib/tmail/.cvsignore
+
+Fri May 16 22:23:57 2003 Minero Aoki <aamine@loveruby.net>
+
+ * accept setup.rb hierarchy in the repository.
+
+Fri May 16 21:18:44 2003 Minero Aoki <aamine@loveruby.net>
+
+ * encode.rb (concat_E): force to flush @text before process.
+
+ * encode.rb: update coding style.
+
+ * test/testmail.rb: test if comments are decoded/encoded.
+
+Fri May 16 21:01:55 2003 Minero Aoki <aamine@loveruby.net>
+
+ * test/testkcode.rb: new file.
+
+ * test/testmail.rb: use kcode.rb.
+
+ * test/testheader.rb: ditto.
+
+Fri May 16 20:58:01 2003 Minero Aoki <aamine@loveruby.net>
+
+ * mailbox.rb (MhMailbox#inspect): fix.
+
+ * mailbox.rb (UNIXMbox): new method UNIXMbox.static_new
+
+ * mailbox.rb (UNIXMbox): does update check of mail spool.
+
+ * mailbox.rb (UNIXMbox): fix temporal directory clean up.
+
+Fri May 16 20:50:40 2003 Minero Aoki <aamine@loveruby.net>
+
+ * facade.rb (Mail#friendly_from): use comments.
+
+Fri May 16 20:49:58 2003 Minero Aoki <aamine@loveruby.net>
+
+ * header.rb: update coding style.
+
+Fri May 16 20:44:49 2003 Minero Aoki <aamine@loveruby.net>
+
+ * parser.y (Parser#parse): decode comments.
+
+ * test/testheader.rb: test if comments are decoded.
+
+Fri May 16 20:42:59 2003 Minero Aoki <aamine@loveruby.net>
+
+ * mail.rb: rename method: Mail#select -> values_at
+
+Mon Apr 28 07:55:52 2003 Minero Aoki <aamine@loveruby.net>
+
+ * facade.rb (to, cc, bcc, from, reply_to): support AddressGroup.
+
+ * test/testmail.rb (to, cc, bcc, from, reply_to): ditto.
+
+Mon Apr 28 07:54:31 2003 Minero Aoki <aamine@loveruby.net>
+
+ * facade.rb: escape ']' following warning.
+
+ * scanner_r.rb: ditto.
+
+Sat Apr 5 01:40:44 2003 Minero Aoki <aamine@loveruby.net>
+
+ * Makefile: implement task `dist'.
+
+Sat Apr 5 01:24:08 2003 Minero Aoki <aamine@loveruby.net>
+
+ * b64 -> base64
+
+ * b64/tmbase64.c -> base64/base64.c
+
+ * base64/extconf.rb: Shared object name is 'base64.so'.
+
+ * encode.rb: require tmail/base64.rb explicitly.
+
+Sat Apr 5 01:22:40 2003 Minero Aoki <aamine@loveruby.net>
+
+ * Makefile: new task 'dist'.
+
+Sat Apr 5 01:02:40 2003 Minero Aoki <aamine@loveruby.net>
+
+ * Makefile: new file.
+
+Sat Apr 5 01:01:48 2003 Minero Aoki <aamine@loveruby.net>
+
+ * mv rmails.rb scanner_r.rb
+
+ * mv sc scanner_c
+
+ * mv sc/cmails.c scanner_c/scanner_c.c
+
+ * mv T test
+
+Sat Apr 5 00:30:53 2003 Minero Aoki <aamine@loveruby.net>
+
+ * mbox.rb: new file. Added for backward compatibility.
+
+Sat Apr 5 00:30:06 2003 Minero Aoki <aamine@loveruby.net>
+
+ * mbox.rb: renamed to mailbox.rb.
+
+ * mailbox.rb: new file.
+
+Sat Apr 5 00:30:06 2003 Minero Aoki <aamine@loveruby.net>
+
+ * mp.y -> parser.y
+
+Fri Nov 15 17:56:01 2002 Minero Aoki <aamine@loveruby.net>
+
+ * sc/mails.c: missing prototype.
+
+Sun Nov 10 23:19:45 2002 Minero Aoki <aamine@loveruby.net>
+
+ version 0.10.6
+
+Sun Nov 10 23:19:17 2002 Minero Aoki <aamine@loveruby.net>
+
+ * doc/mail.rrd: format examples correctly.
+
+Sun Nov 10 22:59:08 2002 Minero Aoki <aamine@loveruby.net>
+
+ * doc/mail.rrd: add Mail#type_param, disposition_param.
+
+Sun Nov 10 22:37:42 2002 Minero Aoki <aamine@loveruby.net>
+
+ * address.rb: adjust to new coding rule.
+
+ * encode.rb: ditto.
+
+ * header.rb: ditto.
+
+ * mail.rb: ditto.
+
+ * mbox.rb: ditto.
+
+ * mp.y: ditto.
+
+ * net.rb: ditto.
+
+ * obsolete.rb: ditto.
+
+ * port.rb: ditto.
+
+ * rmails.rb: ditto.
+
+Sun Nov 10 22:37:01 2002 Minero Aoki <aamine@loveruby.net>
+
+ * T/testmail.rb: test whether the `default' arg is working.
+
+ * utils.rb: decode (wrongly encoded) parameters for
+ Content-Disposition.
+
+ * T/testmail.rb: test MIME-B decode for disposition parameters.
+
+ * facade.rb: set_disposition should overwrites params.
+
+ * facade.rb: set_content_type should overwrites params.
+
+Sun Nov 10 20:46:25 2002 Minero Aoki <aamine@loveruby.net>
+
+ * facade.rb (set_content_type): reject wrong text like "text".
+
+Sun Nov 10 20:15:15 2002 Minero Aoki <aamine@loveruby.net>
+
+ * facade.rb: TMail::Mail#message_id, mime_version, content_type,
+ sub_type, transfer_encoding, disposition: default value did not
+ work.
+
+ * facade.rb: new method TMail::Mail#disposition_params,
+ disposition_param
+
+Sun Nov 10 20:13:35 2002 Minero Aoki <aamine@loveruby.net>
+
+ * mail.rb: new method TMail::Mail#each_port.
+
+Sun Nov 10 20:12:50 2002 Minero Aoki <aamine@loveruby.net>
+
+ * address.rb: type -> self.class
+
+ * header.rb: ditto.
+
+ * port.rb: ditto.
+
+Sun Nov 10 20:11:13 2002 Minero Aoki <aamine@loveruby.net>
+
+ * T/testmail.rb: check "Content-Type: text" (missing subtype).
+
+Sun Nov 10 20:10:22 2002 Minero Aoki <aamine@loveruby.net>
+
+ * sc/mails.c: Check_Type -> StringValue.
+
+ * sc/mails.c: reformat.
+
+Thu Nov 7 05:11:21 2002 Minero Aoki <aamine@loveruby.net>
+
+ * mbox.rb (UNIXMbox): fix typo. (thanks: Brian Fundakowski
+ Feldman)
+
+Wed Aug 14 18:58:35 2002 Minero Aoki <aamine@loveruby.net>
+
+ * mail.rb: does not delay to read message body unless
+ @port.reproducible?
+
+ * port.rb: new method Port#reproducible?
+
+ (thanks: Simon Conrad-Armes)
+
+Wed Aug 14 18:53:52 2002 Minero Aoki <aamine@loveruby.net>
+
+ * facade.rb: modify format.
+
+Wed Jul 10 20:47:15 2002 Minero Aoki <aamine@loveruby.net>
+
+ * version 0.10.5.
+
+Wed Jul 10 20:25:16 2002 Minero Aoki <aamine@loveruby.net>
+
+ * facade.rb: new method Mail#header_string.
+
+ * facade.rb: new method Mail#type_params, type_param.
+
+Wed Jul 10 20:23:29 2002 Minero Aoki <aamine@loveruby.net>
+
+ * port.rb: reduce warnings.
+
+Wed Jul 10 20:23:03 2002 Minero Aoki <aamine@loveruby.net>
+
+ * b64/depend, sc/depend: *.o depend on Makefile and *.h
+
+Thu May 30 22:25:11 2002 Minero Aoki <aamine@loveruby.net>
+
+ * mbox.rb (Maildir#new_port): use unique sequence number instead
+ of sleep & try. (patched by Kikutani, Makoto)
+
+ * mbox.rb (Maildir#new_port): takes optional block to initialize
+ mail file.
+
+ * port.rb (MaildirPort): new method #move_to_new, #move_to_cur.
+
+Thu May 30 21:28:52 2002 Minero Aoki <aamine@loveruby.net>
+
+ * header.rb: internal_new had not initialized @comment. (reported
+ by Kikutani, Makoto)
+
+ * encode.rb (HFdecoder): quote phrase.
+
+Thu May 30 20:44:27 2002 Minero Aoki <aamine@loveruby.net>
+
+ * header.rb (ReturnPathHeader): support null address spec.
+ (reported by Kikutani, Makoto)
+
1 DEPENDS
@@ -0,0 +1 @@
+tmail: raccruntime
89 Incompatibilities
@@ -0,0 +1,89 @@
+= Incompatibilities from version 0.9 to 0.10
+
+The biggest change is that return value of some
+TMail::Mail methods have been changed. In TMail 0.10,
+ALL "<headername>" methods return an array of address
+spec strings, and ALL "<HeaderName>_addrs" methods
+return an array of TMail::Address objects.
+For example:
+
+ # mail header
+ To: Minero Aoki <aamine@loveruby.net>
+
+ # from ruby
+ TMail::Mail#to == ["aamine@loveruby.net"]
+ TMail::Mail#to_addrs == [#<TMail::Address>]
+
+In 0.9, this rule has not been thoroughed.
+
+== Incompatible Changes
+
+* TMail::Mail#from (return value)
+ 0.9 first friendly-from or address spec string
+ 0.10 an array of address spec string for From:.
+ (use friendly_from for 0.9 action)
+
+* TMail::Mail#to (return value)
+ 0.9 first Address object for To:
+ 0.10 an array of address spec string for To:
+
+* TMail::Mail#fetch (number of argument)
+ 0.9 fetch(header_name, init_string, &block)
+ 0.10 fetch(header_name)
+
+* TMail's mail parser raises TMail::SyntaxError
+ instead of ::ParseError in ALL situations.
+
+* TMail::StringPort.new (number of argument)
+ 0.9 new(str, eol, unifyeol)
+ 0.10 new(str='')
+
+* TMail::HeaderField#*
+ Any methods of HeaderField (and its subclasses) are
+ subject to change without notice. Simply do not use them,
+ use TMail::Mail interface methods instead.
+
+== Compatible Changes
+
+These methods are compatible NOW, but is not in 1.0.
+
+* TMail::Mail.new (argument semantic)
+ 0.9 new(port, strict=false)
+ 0.10 new(port, configuration=TMail::DEFAULT_CONFIG)
+ (use TMail::DEFAULT_CONFIG.strict_parse=true instead)
+
+* TMail::MhLoader -> TMail::MhMailbox
+* TMail::MboxLoader -> TMail::UNIXMbox
+* TMail::MaildirLoader -> TMail::Maildir
+ You can use old names as alias.
+
+
+== Obsolete Methods
+
+These methods are defined in tmail/obsolete.rb.
+Currently TMail requires it by default, but in 1.0, it does not.
+
+* TMail::Mail#from_addr
+* TMail::Mail#from_address
+* TMail::Mail#from_address=
+* TMail::Mail#from_phrase (is #friendly_from)
+* TMail::Mail#msgid (is #message_id)
+* TMail::Mail#msgid= (is #message_id)
+* TMail::Mail#each_dest (is #each_destination)
+* TMail::Mail#has_key? (is #key?)
+* TMail::Mail#include? (is #key?)
+* TMail::Mail#value?
+* TMail::Mail#has_value?
+* TMail::Mail#values
+* TMail::Loader#new_mail (is #new_port)
+* TMail::Loader#each_mail (is #each_port)
+* TMail::Loader#each_newmail (is #each_new_port)
+* TMail.boundary (is .new_boundary)
+* TMail.msgid (is .new_message_id)
+* TMail.new_msgid (is .new_message_id)
+* TMail::Mail.boundary (is TMail.new_boundary)
+* TMail::Mail.msgid (is TMail.new_message_id)
+* TMail::Mail.new_msgid (is TMail.new_message_id)
+* TMail.loadfrom (is .load)
+* TMail.load_from (is .load)
+* TMail::Address#route (is #routes)
102 Incompatibilities.ja
@@ -0,0 +1,102 @@
+= �С������ 0.9 ���� 0.10 �ܹԻ�����ߴ��ˤĤ���
+
+�ۤȤ�ɤϥޥ��ʡ��᥽�åɤ��ѹ��ʤΤǤ����������Ȥ�
+�ʤ��Ȼפ��ޤ�����Mail#from #to ���֤��ͤ��ѹ������
+���ʤ���̿Ū�Ǥ����Ǥ���������ϥ᥽�å�̿̾����Τ�
+���롼���Ϳ���뤿��ˤ��򤱤��ʤ��ѹ��ʤΤǶ���
+���뤳�Ȥˤ��ޤ���
+
+
+== 0.10 ��Ƴ������ Mail ���饹�Υ᥽�åɤ����롼��
+
+��Mail#���ɥ쥹�إå�̾�פϥ��ɥ쥹���ڥå� (...@...)
+ʸ�����������֤���
+��Mail#���ɥ쥹�إå�̾_addrs�פ� TMail::Address
+���֥������Ȥ�������֤���
+
+��
+ # �إå��ʸ����
+ To: Minero Aoki <aamine@loveruby.net>
+
+ # �����ɤǤ�
+ TMail::Mail#to == ["aamine@loveruby.net"]
+ TMail::Mail#to_addrs == [#<TMail::Address>]
+
+
+== �ѹ��ꥹ��
+
+* TMail::Mail#from ���֤���
+ 0.9 From: �κǽ�Υ��ɥ쥹�� "friendly from"
+ ���줬�ʤ���Х��ɥ쥹���ڥå�ʸ����
+ (0.10 �Ǥ� Mail#friendly_from ��ȤäƤ������)
+ 0.10 From: �Υ��ɥ쥹���ڥå�ʸ���������
+
+* TMail::Mail#to ���֤���
+ 0.9 To: �κǽ�Υ��ɥ쥹�� Address ���֥�������
+ 0.10 To: �Υ��ɥ쥹���ڥå�ʸ���������
+
+* TMail::Mail#fetch �ΰ��ο�
+ 0.9 fetch(header_name, init_string, &block)
+ 0.10 fetch(header_name)
+
+* TMail �Υѡ������㳰���ꤲ��Ȥ���::ParseError �Ǥ�
+ �ʤ� TMail::SyntaxError ��ȯ������ޤ���
+
+* TMail::StringPort.new �ΰ��ο�
+ 0.9 new(str, eol, unifyeol)
+ 0.10 new(str='')
+
+* TMail::HeaderField ����Ӥ��β��̥��饹����᥽�å�
+ �᥽�å�̾����¾��ͽ��ʤ����ѹ�����뤳�Ȥ�����ޤ�
+ (���Ǥˤ����Ĥ��ѹ����ޤ���)��0.10 �ʹߤǤϤǤ���¤�
+ TMail::Mail �Υ��󥿡��ե������᥽�åɤ�ȤäƤ��������
+
+
+== ���ޤϸߴ���Τ����ѹ�
+
+* TMail::Mail.new ��������
+ TMail::Config ���֥������Ȥ���褦�ˤʤ�ޤ�����
+ true/false ��Ʊ��� Config ���֥������Ȥ��Ѵ�����ޤ���
+
+* TMail::MhLoader -> TMail::MhMailbox
+* TMail::MboxLoader -> TMail::UNIXMbox
+* TMail::MaildirLoader -> TMail::Maildir
+ ���Υ��饹̾����̾�Ȥ��ƻĤ��Ƥ���ޤ���
+ 1.0 �Ǿä����ɤ����Ϥޤ�ͤ���Ǥ���������Ͻ����
+ ���ʤ����ݤʤΤǻĤ����Ȥˤʤ�Ȼפ��ޤ���
+
+
+== ��侩�᥽�åɥꥹ��
+
+tmail/obsolete.rb ��ʬΥ���ޤ��������ߤϥǥե���Ȥ� require ����
+���ޤ��������ΥС������ (1.0 ��ͽ��) �Ǥ� require ���ʤ��褦��
+�ʤ�ޤ���������ե�����ϻĤ��Τǡ���ʬ�� require 'tmail/obsolete'
+����лȤ�³���뤳�Ȥ�Ǥ��ޤ���
+
+���ä����Ʊ����̤Υ᥽�åɤǤ����ޤ��ɥ�����Ȥˤ���侩
+�᥽�åɤϺǽ餫��ܤ��Ƥ��ޤ���
+
+* TMail::Mail#from_addr
+* TMail::Mail#from_address
+* TMail::Mail#from_address=
+* TMail::Mail#from_phrase (#friendly_from)
+* TMail::Mail#msgid (#message_id)
+* TMail::Mail#msgid= (#message_id)
+* TMail::Mail#each_dest (#each_destination)
+* TMail::Mail#has_key? (#key?)
+* TMail::Mail#include? (#key?)
+* TMail::Mail#value?
+* TMail::Mail#has_value?
+* TMail::Mail#values
+* TMail::Loader#new_mail (#new_port)
+* TMail::Loader#each_mail (#each_port)
+* TMail::Loader#each_newmail (#each_new_port)
+* TMail.boundary (.new_boundary)
+* TMail.msgid (.new_message_id)
+* TMail.new_msgid (.new_message_id)
+* TMail::Mail.boundary (TMail.new_boundary)
+* TMail::Mail.msgid (TMail.new_message_id)
+* TMail::Mail.new_msgid (TMail.new_message_id)
+* TMail.loadfrom (.load)
+* TMail.load_from (.load)
+* TMail::Address#route (#routes)
60 Makefile
@@ -0,0 +1,60 @@
+#
+# tmail/Makefile
+#
+
+version = 0.10.8
+datadir = $(HOME)/share
+ardir = $(HOME)/var/archive/tmail
+sitedir = $(HOME)/var/www/tree
+
+.PHONY: all lib ext doc dist site test clean
+
+default: update all
+
+all: lib ext
+
+lib:
+ cd lib/tmail; $(MAKE) DEBUG=true
+
+ext:
+ cd ext/tmail; $(MAKE)
+
+update:
+ update-version --version=$(version) lib/tmail/info.rb lib/tmail/scanner_r.rb ext/tmail/scanner_c/scanner_c.c
+
+import:
+ remove-cvsid amstd ../amstd/stringio.rb > lib/tmail/stringio.rb
+
+doc:
+ mkdir -p doc.ja doc.en
+ compile-documents --ja --template=$(datadir)/template/manual.tmpl.ja --nocode=$(datadir)/NOCODE --refrdrc=$(datadir)/refrdrc.ja doc doc.ja
+ compile-documents --en --template=$(datadir)/template/manual.tmpl.en --nocode=$(datadir)/NOCODE doc doc.en
+
+clean:
+ rm -rf doc.ja doc.en
+ cd lib/tmail; make clean
+ cd ext/tmail; make clean
+
+dist:
+ rm -rf tmp
+ mkdir tmp
+ cd tmp; cvs -Q export -r`echo V$(version) | tr . -` -d tmail-$(version) tmail
+ cd tmp/tmail-$(version); rm -rf web
+ cd tmp/tmail-$(version)/lib/tmail; make parser.rb
+ cd tmp/tmail-$(version); make doc
+ cp $(datadir)/setup.rb tmp/tmail-$(version)
+ cp $(datadir)/LGPL tmp/tmail-$(version)/COPYING
+ cd tmp; tar czf $(ardir)/tmail-$(version).tar.gz tmail-$(version)
+ rm -rf tmp
+
+site:
+ erb web/tmail.ja.rhtml | wrap-html --template=$(datadir)/template/basic.tmpl.ja | nkf -Ej > $(sitedir)/ja/prog/tmail.html
+ erb web/tmail.en.rhtml | wrap-html --template=$(datadir)/template/basic.tmpl.en > $(sitedir)/en/tmail.html
+ rm -rf $(sitedir)/ja/man/tmail
+ mkdir -p $(sitedir)/ja/man/tmail
+ cp ChangeLog BUGS TODO $(sitedir)/ja/man/tmail
+ compile-documents --ja --template=$(datadir)/template/basic.tmpl.ja --nocode=$(datadir)/NOCODE --refrdrc=$(datadir)/refrdrc.ja doc $(sitedir)/ja/man/tmail
+ rm -rf $(sitedir)/en/man/tmail
+ mkdir -p $(sitedir)/en/man/tmail
+ cp ChangeLog BUGS TODO $(sitedir)/en/man/tmail
+ compile-documents --en --template=$(datadir)/template/basic.tmpl.en --nocode=$(datadir)/NOCODE doc $(sitedir)/en/man/tmail
9 NEWS
@@ -0,0 +1,9 @@
+= NEWS
+
+== version 0.10.8 (2004-02-20)
+
+ * TMail::UNIXMbox did not work.
+ * TMail::Mail#encoded did not work when Content-Type: multipart/mixed
+ but that is not multipart mail. [ruby-list:38050]
+ * RFC2231 encoder did not encode 3 characters: *%'
+
46 README.en
@@ -0,0 +1,46 @@
+TMail README
+============
+
+ TMail is mail handling library for Ruby. TMail can
+ extract data from mail, and write data to mail following
+ by RFC procedures.
+
+Requirements
+------------
+
+ * Ruby 1.6 or later
+ (* C compiler, make)
+
+Installation
+------------
+
+ $ tar zxf tmail-X.X.X.tar.gz
+ $ cd tmail-X.X.X/
+ $ ruby setup.rb config
+ $ ruby setup.rb setup
+ ($ su)
+ # ruby setup.rb install
+
+ '#' line may require root permission. If you do not have
+ root permittion, try some options like --prefix. You can
+ see all options by typing "ruby setup.rb --help".
+
+ For library details, see HTML documents placed under doc.en/ .
+ The top page is "index.html".
+
+License
+-------
+
+ GNU LGPL, Lesser General Public License version 2.1.
+ For details of LGPL, see file "COPYING".
+
+Bug Report
+----------
+
+ Any bug reports are welcome.
+ If you encounter to bug of TMail, please e-mail to me.
+
+
+ Minero Aoki
+ aamine@loveruby.net
+ http://i.loveruby.net
73 README.ja
@@ -0,0 +1,73 @@
+TMail README
+============
+
+ TMail �� Ruby ����᡼����ñ�˰�������Υ饤�֥��Ǥ���
+ �᡼�뤫��������롢�����ե����ޥåȤˤ��碌�ƽ񤭹��ࡢ
+ �Ȥ���ξ�̤�Ư������ޤ�������������ץ�ȥ����
+ �ޤߤޤ���
+
+ɬ�״Ķ�
+--------
+
+ * Ruby 1.6 �ʹ�
+ (* C ����ѥ��顢make)
+
+
+���󥹥ȡ���
+-----------
+
+ tar.gz �Υ��������֤�Ÿ�������餽�Υȥåץǥ��쥯�ȥ�ǰʲ�
+ �Τ褦���ǤäƤ��������
+
+ $ ruby setup.rb config
+ $ ruby setup.rb setup
+ ($ su)
+ # ruby setup.rb install
+
+ # �ιԤ��̾�롼�ȸ��¤�ɬ�פˤʤ�ޤ�����--prefix ���ץ����
+ �ʤɤ�Ȥäƥ��󥹥ȡ�����ǥ��쥯�ȥ���ѹ�����в���Ǥ���
+ ���Ȥ�����ޤ������Ȥ��� /home/aamine/lib/ruby �ʲ��˥��󥹥ȡ�
+ �뤷�����ʤ�
+
+ $ ruby setup.rb config --prefix=/home/aamine/lib/ruby
+
+ �Ȥ��ޤ������ܺ٤� ruby install.rb --help �Ǹ��Ƥ��������
+
+ ����ǥ��󥹥ȡ���Ϥ����ޤ��Ǥ���
+ �饤�֥��ξܺ٤ˤĤ��Ƥ� doc.ja/ �ʲ��� HTML �ե������
+ ���Ƥ��������index.html ���ȥåץڡ����Ǥ���
+
+
+̾���ͳ��
+----------
+
+ ���Υ饤�֥����������Τ� 1998 ǯ 6 ��ǡ����Τ���Ϥޤ�
+ �ۤȤ�� Delphi �����Ȥä����Ȥ��ʤ�
+
+ ���饹̾�ˤ� T ��Ĥ�������
+
+ �ȻפäƤ������Ȥ����櫓�� TMail��
+ �Ǥ⤤�޻פ������̤� Mail ���饹����ݤ��ʤ����餳��Ǥ褫�ä�����
+ ����ʤ����촶��褤��
+
+
+�饤����
+----------
+
+ ���Υ饤�֥��˴ޤޤ�륽���������ɤ���ӥɥ�����Ȥ�������Ϻ��
+ �����ݻ�ޤ��������ե��������� GNU Lesser General Public
+ Licence version 2.1 (�ʲ���LGPL)�˽��ä����ۤ����ΤȤ��ޤ���LGPL
+ �ξܺ٤ˤĤ��Ƥϥե����� COPYING �򻲾Ȥ��Ƥ��������
+
+
+�Х��ʤ�
+--------
+
+ �Х�����˾�ʤɤ���ޤ����鲼���Υ��ɥ쥹�˥᡼��򤯤������
+ ��ԤˤϥХ���ľ����Ǥ�Ϥ���ޤ��󤬡����Υ��եȤ���Х���
+ ���餷�����ȤϻפäƤ��ޤ���
+
+
+ ������Ϻ
+ aamine@loveruby.net
+ http://i.loveruby.net
18 TODO
@@ -0,0 +1,18 @@
+- RFC2231 decode
+- delete File*Stream
+- do not output empty/illegal header on to_s
+- simplify field.rb
+- allow raw JIS string in quoted word
+- unify character encoding of japanese strings in header
+- Loader -> Mailbox
+* allow this type of header: "To: Minero A. <aamine@loveruby.net>"
+* write tests of Base64 module
+* RFC2231 encode
+* allow illegal MIME param value encoding (key="=?iso-2022-jp?B?....")
+* purpose-oriented policy switching
+* rewrite samples.
+* address/address-group common handling scheme
+* correct handling of Content-Type: message/*
+* methods for mail creation, replying, forwarding
+* tmail/net
+* mail thread generator
258 doc.en/address.html
@@ -0,0 +1,258 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html lang="en">
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+ <meta http-equiv="Content-Language" content="en">
+<title>Address Classes</title>
+</head>
+<body>
+
+<h1>Address Classes</h1>
+
+<h2><code>class <a name="TMail%3a%3aAddress">TMail::Address</a> </code></h2>
+
+<h3>Class Methods</h3>
+
+<dl>
+<dt><a name="TMail%3a%3aAddress-parse"><code>parse(str)</code></a> -&gt; <code><a href="address.html#TMail%3a%3aAddress">TMail::Address</a> | <a href="address.html#TMail%3a%3aAddressGroup">TMail::AddressGroup</a></code></dt>
+<dd>
+<p>
+str: String<br>
+</p>
+
+<p>
+parses STR and creates new <code>TMail::Address</code> object.
+If STR did not follow the internet address format,
+<code>TMail::SyntaxError</code> exception is raised.
+</p>
+
+</dd>
+<dt><a name="TMail%3a%3aAddress-new"><code>new(locals, <var>domains</var>)</code></a> -&gt; <code><a href="address.html#TMail%3a%3aAddress">TMail::Address</a> | <a href="address.html#TMail%3a%3aAddressGroup">TMail::AddressGroup</a></code></dt>
+<dd>
+<p>
+locals: [String]<br>
+domains: [String]<br>
+</p>
+
+<p>
+creates new <code>TMail::Address</code> object consist from local part
+LOCALS and domain part <var>domains</var>.
+</p>
+
+</dd>
+</dl>
+<h3>Instance Methods</h3>
+
+<dl>
+<dt><a name="TMail%3a%3aAddress-address_group%3f"><code>address_group?</code></a> -&gt; <code>true | false</code></dt>
+<dd>
+<p>
+returns false.
+</p>
+
+</dd>
+<dt><a name="TMail%3a%3aAddress-spec"><code>spec</code></a> -&gt; <code>String</code></dt>
+<dd>
+<p>
+an address spec ("....@....").
+</p>
+
+</dd>
+<dt><a name="TMail%3a%3aAddress-routes"><code>routes</code></a> -&gt; <code>[String]</code></dt>
+<dd>
+<p>
+delivery routes. Strings do not include character "@".
+</p>
+
+</dd>
+<dt><a name="TMail%3a%3aAddress-name"><code>name</code></a> -&gt; <code>String</code></dt>
+<dt><a name="TMail%3a%3aAddress-phrase"><code>phrase</code></a> -&gt; <code>String</code></dt>
+<dd>
+<p>
+short description for this address (e.g. real name).
+</p>
+
+</dd>
+<dt><a name="TMail%3a%3aAddress-encoded"><code>encoded(eol = "\r\n", <var>encoding</var> = 'j')</code></a> -&gt; <code>String</code></dt>
+<dd>
+<p>
+eol: String<br>
+encoding: String<br>
+</p>
+
+<p>
+converts this object into MIME-encoded string.
+</p>
+
+</dd>
+<dt><a name="TMail%3a%3aAddress-to_s"><code>to_s(eol = "\n", <var>encoding</var> = 'e')</code></a> -&gt; <code>String</code></dt>
+<dt><a name="TMail%3a%3aAddress-decoded"><code>decoded(eol = "\n", <var>encoding</var> = 'e')</code></a> -&gt; <code>String</code></dt>
+<dd>
+<p>
+eol: String<br>
+encoding: String<br>
+</p>
+
+<p>
+converts this object into decoded string.
+</p>
+
+</dd>
+<dt><a name="TMail%3a%3aAddress-%3d%3d"><code>==(other)</code></a> -&gt; <code>true | false</code></dt>
+<dd>
+<p>
+other: Object<br>
+</p>
+
+<p>
+judge if self equals to other by inspecting addr-spec string (#spec).
+#name and #routes never affects the return value.
+</p>
+
+
+</dd>
+</dl>
+<h2><code>class <a name="TMail%3a%3aAddressGroup">TMail::AddressGroup</a> </code></h2>
+
+<h3>Class Methods</h3>
+
+<dl>
+<dt><a name="TMail%3a%3aAddressGroup-new"><code>new(name, <var>addrs</var>)</code></a> -&gt; <code><a href="address.html#TMail%3a%3aAddressGroup">TMail::AddressGroup</a></code></dt>
+<dd>
+<p>
+name: String<br>
+addrs: [<a href="address.html#TMail%3a%3aAddress">TMail::Address</a> | <a href="address.html#TMail%3a%3aAddressGroup">TMail::AddressGroup</a>]<br>
+</p>
+
+<p>
+creates new <code>TMail::AddressGroup</code> object.
+NAME is the name of this group, <var>addrs</var> is addresses
+which belongs to this group.
+</p>
+
+</dd>
+</dl>
+<h3>Instance Methods</h3>
+
+<dl>
+<dt><a name="TMail%3a%3aAddressGroup-address_group%3f"><code>address_group?</code></a> -&gt; <code>true | false</code></dt>
+<dd>
+<p>
+returns true.
+</p>
+
+</dd>
+<dt><a name="TMail%3a%3aAddressGroup-name"><code>name</code></a> -&gt; <code>String</code></dt>
+<dd>
+<p>
+the human readable name of this group.
+</p>
+
+</dd>
+<dt><a name="TMail%3a%3aAddressGroup-addresses"><code>addresses</code></a> -&gt; <code>[<a href="address.html#TMail%3a%3aAddress">TMail::Address</a> | <a href="address.html#TMail%3a%3aAddressGroup">TMail::AddressGroup</a>]</code></dt>
+<dd>
+<p>
+addresses which belongs to this group.
+</p>
+
+</dd>
+<dt><a name="TMail%3a%3aAddressGroup-to_a"><code>to_a</code></a> -&gt; <code>[<a href="address.html#TMail%3a%3aAddress">TMail::Address</a> | <a href="address.html#TMail%3a%3aAddressGroup">TMail::AddressGroup</a>]</code></dt>
+<dt><a name="TMail%3a%3aAddressGroup-to_ary"><code>to_ary</code></a> -&gt; <code>[<a href="address.html#TMail%3a%3aAddress">TMail::Address</a> | <a href="address.html#TMail%3a%3aAddressGroup">TMail::AddressGroup</a>]</code></dt>
+<dd>
+<p>
+equals to <code>addresses.dup</code>.
+</p>
+
+</dd>
+<dt><a name="TMail%3a%3aAddressGroup-flatten"><code>flatten</code></a> -&gt; <code>[<a href="address.html#TMail%3a%3aAddress">TMail::Address</a>]</code></dt>
+<dd>
+<p>
+flatten this group into one level of array of <code>TMail::Address</code>.
+</p>
+
+</dd>
+<dt><a name="TMail%3a%3aAddressGroup-add"><code>add(addr)</code></a></dt>
+<dt><a name="TMail%3a%3aAddressGroup-push"><code>push(addr)</code></a></dt>
+<dd>
+<p>
+addr: <a href="address.html#TMail%3a%3aAddress">TMail::Address</a> | <a href="address.html#TMail%3a%3aAddressGroup">TMail::AddressGroup</a><br>
+</p>
+
+<p>
+adds an address or an address group to this group.
+</p>
+
+</dd>
+<dt><a name="TMail%3a%3aAddressGroup-delete"><code>delete(addr)</code></a></dt>
+<dd>
+<p>
+addr: <a href="address.html#TMail%3a%3aAddress">TMail::Address</a> | <a href="address.html#TMail%3a%3aAddressGroup">TMail::AddressGroup</a><br>
+</p>
+
+<p>
+removes ADDR from this group.
+</p>
+
+</dd>
+<dt><a name="TMail%3a%3aAddressGroup-each%20%7b%7ca%7c%20%2e%2e%2e%2e%20%7d"><code>each {|a| .... }</code></a></dt>
+<dd>
+<p>
+a: <a href="address.html#TMail%3a%3aAddress">TMail::Address</a> | <a href="address.html#TMail%3a%3aAddressGroup">TMail::AddressGroup</a><br>
+</p>
+
+<p>
+equals to <code>addresses.each {|a| .... }</code>.
+</p>
+
+</dd>
+<dt><a name="TMail%3a%3aAddressGroup-each_address%20%7b%7ca%7c%20%2e%2e%2e%2e%20%7d"><code>each_address {|a| .... }</code></a></dt>
+<dd>
+<p>
+a: <a href="address.html#TMail%3a%3aAddress">TMail::Address</a><br>
+</p>
+
+<p>
+equals to <code>flatten.each {|a| .... }</code>
+</p>
+
+</dd>
+<dt><a name="TMail%3a%3aAddressGroup-encoded"><code>encoded(eol = "\r\n", <var>encoding</var> = 'j')</code></a> -&gt; <code>String</code></dt>
+<dd>
+<p>
+eol: String<br>
+encoding: String<br>
+</p>
+
+<p>
+converts this object into MIME-encoded string.
+</p>
+
+</dd>
+<dt><a name="TMail%3a%3aAddressGroup-decoded"><code>decoded(eol = "\n", <var>encoding</var> = 'e')</code></a> -&gt; <code>String</code></dt>
+<dd>
+<p>
+eol: String<br>
+encoding: String<br>
+</p>
+
+<p>
+converts this object into decoded string.
+</p>
+
+</dd>
+<dt><a name="TMail%3a%3aAddressGroup-%3d%3d"><code>==(other)</code></a> -&gt; <code>true | false</code></dt>
+<dt><a name="TMail%3a%3aAddressGroup-eql%3f"><code>eql?(other)</code></a> -&gt; <code>true | false</code></dt>
+<dd>
+<p>
+other: Object<br>
+</p>
+
+<p>
+judges if self is equal to OTHER, by comparing <code>self.addresses</code> and
+<code>other.addresses</code>. (<code>self.name</code> is meanless)
+</p>
+</dd>
+</dl>
+
+</body>
+</html>
17 doc.en/basics.html
@@ -0,0 +1,17 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html lang="en">
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+ <meta http-equiv="Content-Language" content="en">
+<title>Basics of Internet Mail System</title>
+</head>
+<body>
+
+<h1>Basics of Internet Mail System</h1>
+
+<p>
+not ready.
+</p>
+
+</body>
+</html>
41 doc.en/config.html
@@ -0,0 +1,41 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html lang="en">
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+ <meta http-equiv="Content-Language" content="en">
+<title><code>class <a name="TMail%3a%3aConfig">TMail::Config</a> </code></title>
+</head>
+<body>
+
+<h1><code>class <a name="TMail%3a%3aConfig">TMail::Config</a> </code></h1>
+
+<h2>Class Methods</h2>
+
+<dl>
+<dt><a name="TMail%3a%3aConfig-new"><code>new(strict)</code></a> -&gt; <code><a href="config.html#TMail%3a%3aConfig">TMail::Config</a></code></dt>
+<dd>
+<p>
+strict: true | false<br>
+</p>
+
+<p>
+create a TMail::Config object.
+set true to all strict_* attributes if STRICT is true.
+</p>
+
+</dd>
+</dl>
+<h2>Instance Methods</h2>
+
+<dl>
+<dt><a name="TMail%3a%3aConfig-strict_parse%3f"><code>strict_parse?</code></a></dt>
+<dd>
+<p>
+If this flag is true, TMail's parsers may raise
+TMail::SyntaxError. If not, it never raises SynaxError.
+</p>
+</dd>
+</dl>
+
+</body>
+</html>
28 doc.en/details.html
@@ -0,0 +1,28 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html lang="en">
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+ <meta http-equiv="Content-Language" content="en">
+<title>Feature Details</title>
+</head>
+<body>
+
+<h1>Feature Details</h1>
+
+<h2>Character Encodings</h2>
+
+<p>
+I DO NOT support non-Japanese character encodings until
+ruby implements M17N functions. It's too complex for me.
+</p>
+
+<h2>Header Comments</h2>
+
+<p>
+TMail discards ALL comments on converting HeaderField objects
+into strings, because I cannot preserve position of comments.
+</p>
+
+
+</body>
+</html>
31 doc.en/index.html
@@ -0,0 +1,31 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html lang="en">
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+ <meta http-equiv="Content-Language" content="en">
+<title>TMail User Manual</title>
+</head>
+<body>
+
+<h1>TMail User Manual</h1>
+
+<p>
+for version 0.10
+</p>
+
+<ul>
+<li><a href="usage.html" >Usage </a>
+<li><a href="details.html">Feature Details </a>
+<li><a href="mail.html" >Mail Message Class </a>
+<li><a href="address.html">Mail Address Classes </a>
+<li><a href="mailbox.html">Mailbox Classes </a>
+<li><a href="port.html" >Port and Stream Classes </a>
+<li><a href="config.html" >Config Class </a>
+<li><a href="tmail.html" >TMail Module </a>
+
+
+
+</ul>
+
+</body>
+</html>
737 doc.en/mail.html
@@ -0,0 +1,737 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html lang="en">
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+ <meta http-equiv="Content-Language" content="en">
+<title><code>class <a name="TMail%3a%3aMail">TMail::Mail</a> </code></title>
+</head>
+<body>
+
+<h1><code>class <a name="TMail%3a%3aMail">TMail::Mail</a> </code></h1>
+
+<h2>Class Methods</h2>
+
+<dl>
+<dt><a name="TMail%3a%3aMail-new"><code>new(port = TMail::StringPort.new, <var>config</var> = DEFAULT_CONFIG)</code></a> -&gt; <code><a href="mail.html#TMail%3a%3aMail">TMail::Mail</a></code></dt>
+<dd>
+<p>
+port: <a href="port.html#TMail%3a%3aPort">TMail::Port</a><br>
+config: <a href="config.html#TMail%3a%3aConfig">TMail::Config</a><br>
+</p>
+
+<p>
+creates a new <code>TMail::Mail</code> object from PORT.
+</p>
+
+</dd>
+<dt><a name="TMail%3a%3aMail-load"><code>load(filename)</code></a> -&gt; <code><a href="mail.html#TMail%3a%3aMail">TMail::Mail</a></code></dt>
+<dd>
+<p>
+filename: String<br>
+</p>
+
+<p>
+creates a new <code>TMail::Mail</code> object. FILENAME is the name of file
+which contains just one mail (e.g. MH mail file).
+</p>
+
+</dd>
+<dt><a name="TMail%3a%3aMail-parse"><code>parse(str)</code></a> -&gt; <code><a href="mail.html#TMail%3a%3aMail">TMail::Mail</a></code></dt>
+<dd>
+<p>
+str: String<br>
+</p>
+
+<p>
+parses STR and creates a new <code>TMail::Mail</code> object.
+</p>
+
+</dd>
+</dl>
+<h2>Instance Methods</h2>
+
+<dl>
+<dt><a name="TMail%3a%3aMail-port"><code>port</code></a> -&gt; <code><a href="port.html#TMail%3a%3aPort">TMail::Port</a></code></dt>
+<dd>
+<p>
+the source port of this mail.
+</p>
+
+</dd>
+<dt><a name="TMail%3a%3aMail-body_port"><code>body_port</code></a> -&gt; <code><a href="port.html#TMail%3a%3aPort">TMail::Port</a></code></dt>
+<dd>
+<p>
+the port to save body of this mail.
+</p>
+
+</dd>
+<dt><a name="TMail%3a%3aMail-each%20%7b%7cline%7c%20%2e%2e%2e%2e%20%7d"><code>each {|line| .... }</code></a></dt>
+<dd>
+<p>
+line: String<br>
+</p>
+
+<p>
+iterates for each lines of mail body.
+</p>
+
+</dd>
+<dt><a name="TMail%3a%3aMail-body"><code>body</code></a> -&gt; <code>String</code></dt>
+<dt><a name="TMail%3a%3aMail-preamble"><code>preamble</code></a> -&gt; <code>String</code></dt>
+<dd>
+<p>
+the mail body. If the mail is a MIME multipart mail,
+this attribute represents "preamble".
+</p>
+
+</dd>
+<dt><a name="TMail%3a%3aMail-parts"><code>parts</