[mew-dist 23438] Re: POP で取り込めないメールが発生した場合のお願い
ml at example.com
ml at example.com
2003年 3月 25日 (火) 18:35:55 JST
POP, IMAP で取り込めないメールが発生しました。
で、メールサーバを覗いて分りました。
ようは、invalid なメールでした。
原因は、CVS のコミット時に syncmail でメールを送信しているのですが、
CVSROOT/cvswrappers にバイナリ扱いとしていなく、バイナリの diff がメー
ルに付けられて送られていました。
この場合、そのメールを送信してしまうこと自体が問題なのですが、
とりあえず、それはおいといて。
仮にそのようなメールを送られた場合に、99% まで取り込んだところで emacs
自体が固まってしまいます。kill -KILL するしかなくなります。できたら、
対応できると嬉しいのですが、mew の取り込み時に対応できるのか、emacs 側
の問題であるのか分りません。
patch ですが、すでにコードが違ってしまってるので当てられない&目視でも
無理でした。
--
nara
Kazu Yamamoto (山本和彦) <kazu at example.com> wrote in message
Date: Mon, 27 Jan 2003 12:25:52 +0900 (JST)
> POP で取り込めないメールが発生した場合のお願いをまとめておきます。
>
> 原因は、POP サーバから変な文字コードを送られて、Emacs の内部コードが狂
> い process-send-string() が狂うののだと思われます。
>
> POP で取り込めないメールが発生する人へのお願い:
>
> まっさらな Mew (anon cvs でも mew-3.1.5x でも OK)に、以下のパッチを当
> てて下さい。
>
> 取り込めないメールが発生したら、
> (setq mew-pop-debug-case 1)
> として、取り込めるか実験して下さい。
>
> 取り込めないなら、1 を 2 に変えて実験。さらに、3 でも実験して下さい。
>
> 取り込めると、nil に戻し、再び取り込めないメールが発生するまで待ちます。
> その後、2 や 3 でも実験して下さい。
>
> それで、1、2、3 それぞれに対し、取り込めるか以下かを教えて下さい。
>
> おそらく、1 と 2 では取り込めます。3 はあまり自信ないです。でも、3 で
> 取り込めれば、これを解決策として採用したいです。
>
> --かず
>
> Index: mew-pop.el
> ===================================================================
> RCS file: /cvsroot/mew/mew/mew-pop.el,v
> retrieving revision 1.146
> diff -c -r1.146 mew-pop.el
> *** mew-pop.el 2003/01/23 06:49:38 1.146
> --- mew-pop.el 2003/01/27 03:21:33
> ***************
> *** 506,514 ****
> (goto-char (point-max))
> (insert (format "\n<%s>\n%s\n" label string)))))
>
> (defun mew-pop-process-send-string (pro &rest args)
> ! (let ((str (apply 'format args)))
> ! (process-send-string pro (concat str mew-cs-eol))))
>
> (defun mew-pop-scan-header ()
> (goto-char (point-min))
> --- 506,534 ----
> (goto-char (point-max))
> (insert (format "\n<%s>\n%s\n" label string)))))
>
> + (defvar mew-pop-debug-case nil)
> +
> (defun mew-pop-process-send-string (pro &rest args)
> ! (cond
> ! ((eq mew-pop-debug-case 1)
> ! (with-temp-buffer
> ! (insert (apply 'format args))
> ! (insert mew-cs-eol)
> ! (process-send-region pro (point-min) (point-max))))
> ! ((eq mew-pop-debug-case 2)
> ! (with-temp-buffer
> ! (mew-set-buffer-multibyte nil)
> ! (insert (apply 'format args))
> ! (insert mew-cs-eol)
> ! (process-send-region pro (point-min) (point-max))))
> ! ((eq mew-pop-debug-case 3)
> ! (let ((str (concat (apply 'format args) mew-cs-eol)))
> ! (if (fboundp 'string-as-unibyte)
> ! (setq str (string-as-unibyte str)))
> ! (process-send-string pro str)))
> ! (t
> ! (let ((str (apply 'format args)))
> ! (process-send-string pro (concat str mew-cs-eol))))))
>
> (defun mew-pop-scan-header ()
> (goto-char (point-min))
>
Mew-dist メーリングリストの案内