[Mew-dist 05561] Re: b47
Shun-ichi GOTO
gotoh at example.com
1998年 7月 16日 (木) 23:01:44 JST
後藤@太陽計測です
#Subject: のエンコードの話しで、もう1件
>>>>> From: Kazu Yamamoto (山本和彦) <kazu at example.com>
> 詳しくは別のメールで書きますが、このバージョンではヘッダの符号化が厳密
> に RFC 2047 に添っています。(添っているといいな。うん。^^;)
mew-header-skip-prefixというコードが追加されたようで、
"Re: " など、これに該当する部分はスキップした後、その後ろの文字列を
問答無用でエンコードしているようですが、これはちょっと。。。(^^;
たとえば以下のようなSubject: のメールを書くとちょっとイヤです。(;_;)
Subject: Re: [Mailing-List:1234] What is 漢字?
これはこのように↓[Mailing... も含めてエンコードされます
Subject: Re: =?iso-2022-jp?B?W01haWxpbmctTGlzdDoxMjM0XSBXaGF0IGlzIBskQjRBO3obKEI/?=
[Mailing...]がエンコードされてしまうのは、直接的にはmew-header-skip-prefix
にてregexpに ':' が含まれていないのが原因ですので、
せめてこんなふうにしてはいかがでしょうか。
(defun mew-header-skip-prefix ()
(while (or (looking-at "\\(Re\\|Fw\\|Forward\\):[ \t]+")
(looking-at "[[(}][a-zA-Z0-9-+_ :]+[])}][ \t]+"))
(goto-char (match-end 0))))
また、skipという考え方を使用するのであれば、"Re:"や"Fw:"や"[mew-dist 1234]"
といった文字列ばかりを特別扱いする理由がわかりません。
ASCIIはみなskipするのではまずいのでしょうか?
たとえばこんなかんじで。。。
(defun mew-header-skip-prefix ()
(if (looking-at "[ \t\040-\177]+")
(goto-char (match-end 0))))
あ〜んど、このケースでは一行が 76 columnを超えているので RFC-2047に
そぐわないのでは?
# [RFC-2047]
# 2. Syntax of encoded-words
# ....
# While there is no limit to the length of a multiple-line header
# field, each line of a header field that contains one or more
# 'encoded-word's is limited to 76 characters.
現状の実装枠内で76 columnを超えないようにするというのならば、
mew-header-encode-stringとして以下のようなコードはどうでしょうか。
#アルゴリズムもなにもなく、最長から初めて、望みの長さに収まるまで短く
#しながらエンコードし続けます。
#呼び出し時、col には (length "Subject: ")などを与えます。
#ダサイですが、一例として(^^;
(defun mew-header-encode-string (str &optional col)
""
(let ((pre str)
(post "")
(ret nil)
maxlen eword)
(while (< 0 (length pre))
(setq maxlen (- 76 (or col 1)))
(while (and pre
(< maxlen (length (setq eword (mew-header-encode pre)))))
(if (string-match "\\(.*\\)\\(.\\)$" pre)
(setq post (concat (mew-match 2 pre) post)
pre (mew-match 1 pre))
(setq pre nil)))
(if pre
(setq ret (cons eword ret))
(setq ret (cons "" ret)))
(setq pre post
post ""
col nil))
(nreverse ret)))
--- Regards,
Shun-ichi Goto <gotoh at example.com>
R&D Group, TAIYO Corp., Tokyo, JAPAN
Mew-dist メーリングリストの案内