[Mew-dist 08784] to and cc on reply
Kazu Yamamoto ( 山本和彦 )
kazu at example.com
1999年 5月 13日 (木) 13:49:35 JST
昨日、reply 際どう To: と Cc: が選ばれるのかについて、info を書こうと
したところ、よく分からなくなり、motonori さんと協議しました。その結果、
以下のような綺麗なコードに落ち着きました。
(setq from (mew-header-parse-address mew-from:))
(setq reply-to (mew-header-parse-address mew-reply-to:))
(cond
((mew-is-my-address (mew-get-my-address-regex-list) from)
;; This message was sent by me. So, maintain To: and Cc:.
(setq to (mew-header-parse-address-list2 mew-fromme-to-list))
(setq cc (mew-header-parse-address-list2 mew-fromme-cc-list))
(if (null to) (setq to (or reply-to from)))) ;; don't use list
(t
(cond
(reply-to
(setq to (mew-header-parse-address-list2 mew-replyto-to-list))
(setq cc (mew-header-parse-address-list2 mew-replyto-cc-list)))
(t
(setq to (mew-header-parse-address-list2 mew-noreplyto-to-list))
(setq cc (mew-header-parse-address-list2 mew-noreplyto-cc-list)))))
)
(前提1) 匿名アドレス(:;)を To: や Cc: に入れてはいけない
(前提2) From: は必ず存在する
(前提3) From: が自分だったら To: と Cc: を変更しない
(前提4) From: が自分以外だったら、Reply-To: があるかないかで挙動を変える
(ハック1) mew-header-parse-address-list2 は与えられたフィールド群から
アドレス群を取り出す。ただし、":;" にマッチするものは除く。
というわけで、アルゴリズムを解説すると以下のようになります。
- もし From: が自分だったら
To: を to へ
Cc: を cc へ
念のため to が空なら Reply-To: か From: を to へ
- もし From: が自分以外だったら
- もし Reply-To: があるなら
Reply-To: と From: を to へ
To: と Cc: を cc へ
- もし Reply-To: がないなら
From: を to へ
To: と Cc: を cc へ
ご満足頂けましたでしょうか? > motonori さん
P.S.
今までの Mew は
To: foo,
bar,
baz
のように 1 行に 1 アドレスを入れていましたが、ちゃんとカラムを見て、
To: foo, bar, baz
のように最小限の行数に納めるようにしました。
--かず
Mew-dist メーリングリストの案内