[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 メーリングリストの案内