Gnus+BBDBでUnparsable address エラー
NAKAJI Hiroyuki <[email protected]> Tue, 07 Oct 2008 00:56:26 +0900
| Newsgroups | gmane.emacs.gnus.semi.japanese |
|---|---|
| Message-ID | <[email protected]> |
中治@鳥取です。 楽天からのメールの From が From: [楽●天]トラベルニュース <[email protected]> なのですが、Emacs + Gnus + BBDB (いずれも CVS HEAD) の組み合わせで、この From だけ、以下のエラーになります。「[」があるのがイカンらしいです。 Debugger entered--Lisp error: (wrong-type-argument listp "(Unparsable address -- Strange character \\[ found: \"[_^_\x697d\x25cf\x5929]\x30c8\x30e9\x30d9\x30eb\x30cb\x30e5\x30fc\x30b9 <[email protected]>\")") bbdb-rfc822-addresses("[\x697d\x25cf\x5929]\x30c8\x30e9\x30d9\x30eb\x30cb\x30e5\x30fc\x30b9 <[email protected]>") bbdb-get-addresses(nil "NAKAJI Hiroyuki\\|\x4e2d\x6cbb \x5f18\x884c" gnus-fetch-field) bbdb/gnus-update-records(nil) bbdb/gnus-pop-up-bbdb-buffer() run-hooks(gnus-article-prepare-hook) apply(run-hooks gnus-article-prepare-hook) gnus-run-hooks(gnus-article-prepare-hook) gnus-article-prepare-display() gnus-article-prepare(1651 nil) gnus-summary-display-article(1651 nil) gnus-summary-goto-article(1651) gnus-summary-read-group-1("nnml:from.rakuten" nil nil nil nil nil) gnus-summary-read-group("nnml:from.rakuten" nil nil nil nil nil nil) gnus-group-read-group(nil) call-interactively(gnus-group-read-group nil nil) bbdb-rfc822-addresses() は bbdb-snarf.el で定義されているのですが、 (defun bbdb-rfc822-addresses ( addrline &optional ignore-errors) "Split ADDRLINE into a list of parsed addresses. You can't do this with rfc822.el in any sort of useful way because it discards the comments. You can't do this with mail-extr.el because the multiple address parsing in GNU Emacs appears to be broken beyond belief, and the XEmacs version doesn't support multiple addresses." (let (addrs (start 0)) (setq addrline (concat addrline ",")) ;; kludge, to make parsing easier ;; Addresses are separated by commas. This is probably the worst ;; possible way to do this, but it does cut down on the amount of ;; coding effort I have to duplicate. Basically, we split on ;; commas, and then try and parse what we've found. Pathologically ;; bad address lines will break this. (while (string-match "\\([^,]+\\)," addrline start) (let* ((thisaddr (substring addrline 0 (match-end 1))) (comma (match-end 0)) ;; rfc822-addresses trashes match-data (parsed (rfc822-addresses thisaddr))) ...)))) この (rfc822-addresses thisaddr) 部分で [ が引っかかって、 emacs/lisp/mail/rfc822.el の rfc822-bad-address() に至り、Unparsable addressになってるようです。 さて、このケースでは、emacs/lisp/mail/rfc822.el は悪くなく、つまり、楽天 のFromの設定がrfc822違反ということになるでしょうか? (emacs-version) "GNU Emacs 23.0.60.2 (i386--freebsd, X toolkit, Xaw3d scroll bars) of 2008-10-01 on ra333.heimat.gr.jp" (gnus-version) "No Gnus v0.11" (bbdb-version) "BBDB version 2.36 devo" -- NAKAJI Hiroyuki (中治 弘行)