トップ «前の日記(2005-01-18 (Tue)) 最新 次の日記(2005-01-21 (Fri))» 編集

猫熊は燃えつきた?!日記

最近なんにもやっていませんが、なにかやったらこちらに置くようにしています。
2002|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|
2011|09|
2012|02|


2005-01-19 (Wed) [長年日記]

SPAM を読もう!!

こんなことに無駄な労力をかけたい気分だったので :-)
mew-dist に出したのよりちょっとだけ進化したような感じ。
(add-hook 'mew-summary-mode-hook
	  (lambda ()
	    (define-key mew-summary-mode-map "`" 'mew-force-view-strange-message)))
 
(defconst mew--fake--decode nil)
(defun mew-force-view-strange-message (&optional arg)
  (interactive "P")
  (if (not mew-mule-p)
      (message "This command cannot be used on non-Mule Emacs")
    (mew-summary-msg-or-part
     (mew-summary-goto-message)
     (let ((mew-cs-database-for-decoding mew-cs-database-for-decoding)
	   (mew--fake--decode t)
	   (mew-decode-broken t)
	   (mew-use-name-parameter t)
	   (mew-use-alternative nil)
	   (mew-use-text-body t)
	   (orig-lang current-language-environment)
	   lang cs-env)
       (when arg
	 (setq lang (mew-input-language-name
		     (format "Language (%s): " orig-lang) orig-lang))
	 (setq cs-env (mew-set-language-environment-coding-systems lang)))
       (setq mew-cs-database-for-decoding
	     (cons '("unknown" . undecided) mew-cs-database-for-decoding))
       (unwind-protect
	   (mew-summary-analyze-again)
	 (when (and arg cs-env)
	   (mew-reset-coding-systems (car cs-env) (cdr cs-env))))))))
 
(defadvice mew-header-decode (around fake-decode activate)
  (if mew--fake--decode (ad-set-arg 0 "unknown"))
  ad-do-it)
 
(defadvice mew-decode-charset-conv (around fake-decode activate)
  (when mew--fake--decode
    (mew-xinfo-set-warning
     (cons "Charset FAKE!!\n" (mew-xinfo-get-warning)))
    (when (eq mew--fake--decode 'mime)
      (mew-xinfo-set-warning
       (cons "Mime-Version: FAKE!!\n" (mew-xinfo-get-warning))))
    (ad-set-arg 0 "unknown"))
  ad-do-it)
 
(defadvice mew-decode-rfc822-header (after fake-decode activate)
  ;; (list mimep subj from)
  (when (and mew--fake--decode
	     (not (car ad-return-value)))
    (setq mew--fake--decode 'mime)
    (setcar ad-return-value t)))
良い子のみなさんは使わない方が良いと思われるし、こんな大事な関数群に advice かけちゃって良いのか?という気もする。

効能

  • ` を押すと、間違った chaset でも Emacs にまかせて Decode する
  • ` を押すと、C-cC-l と違って MIME の解析もする
  • ` を押すと、Mime-Version: が無くても MIME なメールと見なして解析する
  • C-u ` を押すと、言語が選べる
  • 結果を捨てたいときは、. したり zc したり

もしも

あとなにかやるとしたら、
  Subject: [palm-ml 5755] =?ISO-2022-JP?B?GyRCJGQkQyRIPVAkPyRfJD8kJCRHJDkkTRso
          Qg==?=
こんなのを救うかどうかか。。。これはちょっと大変だな。

書いている人: 白井秀行 (mailto:shirai@meadowy。org)
訪問して下さった人: 今日: 人, 昨日: , 過去: 人 (2007年5月10日から)
RDF Feed