[Mew-dist 17510] auto-detect CT by X-Mailer (test).

Shuichi KITAGUCHI kit at example.com
2001年 5月 23日 (水) 23:22:34 JST


北口です。

config の guess がかなり便利で、その枠組で対 Outlook 対策ができそう
だったのでやってみました。ただ、問題はあります。

・やりたいこと
  X-Mailer: が Outlook だったら、添付ファイルの CT: を Mew が判定でき
  ない場合のデフォルトを "Text/Plain" ではなく "Application/Octet-Stream"
  にする。

・パッチ
  最後に添付。

・mew-config-alist
  ("outlook"
   ("default-ct"       . "application/octet-stream"))
  というエントリを追加。

ここまでで case を "outlook" にすると、CT: のデフォルトが変更される
ようになります。それに加えて、

・mew-config-guess-alist
  ("X-Mailer:"
   ("Microsoft Outlook"     . "outlook"))
  というエントリを追加。

とすることでリプライ時限定ですが、相手が Outlook だったら自動的に
case が変更されます。


・問題点
  case は 1 つしか guess できないので、"outlook" にヒットしてしまうと
  他が "default" になる。よって、事実上 "default" と "outlook" しか
  使えない(Summary Mode などで明示的に case を指定する場合は、
  "outlook,foo" と指定できるので大丈夫)。

問題点がかなり痛いのですが、guess と連携したいのと、「判断できなかった
場合のデフォルトの CT: を変更したい」ということにも使いたいのとで、
こんな感じかなと考えています。


--
Shuichi Kitaguchi // ki at example.com

--- mew-config.el.original	Wed May 09 11:43:52 2001
+++ mew-config.el	Wed May 23 21:23:42 2001
@@ -224,6 +224,11 @@
 (defun mew-header-alist (&optional case)
   (mew-cfent-value case "header-alist" mew-header-alist))
 
+;;
+
+(defun mew-default-ct (&optional case)
+  (mew-cfent-value case "default-ct" "text/plain"))
+
 ;;;
 ;;; Setting Config
 ;;;
--- mew-vars2.el.original	Wed May 09 17:03:39 2001
+++ mew-vars2.el	Wed May 23 22:47:24 2001
@@ -349,8 +349,12 @@
 (defsubst mew-ctdb-by-ct (ct)
   (mew-assoc-match2 ct mew-mime-content-type 0))
 
-(defsubst mew-ctdb-by-file (ct)
-  (mew-assoc-match2 ct mew-mime-content-type 1))
+(defsubst mew-ctdb-by-file (file)
+  (let ((ct (mew-assoc-match2 file mew-mime-content-type 1))
+	(cases (mew-tinfo-get-config)))
+    (if (and (equal (nth 1 ct) ".*") cases)
+	(mew-ctdb-by-ct (mew-default-ct cases))
+      ct)))
 
 (defsubst mew-ctdb-ct (attr)
   (mew-capitalize (nth 0 attr)))



Mew-dist メーリングリストの案内