Re: Gnus+BBDBでUnparsable addre ssエラー
Katsumi Yamaoka <[email protected]> Tue, 07 Oct 2008 08:04:29 +0900
| Newsgroups | gmane.emacs.gnus.semi.japanese |
|---|---|
| Organization | Emacsen advocacy group |
| Message-ID | <[email protected]> |
>>>>> In [semi-gnus-ja : No.20989] 中治さん wrote: > 楽天からのメールの From が > From: [楽●天]トラベルニュース <[email protected]> > なのですが、Emacs + Gnus + BBDB (いずれも CVS HEAD) の組み合わせで、この > From だけ、以下のエラーになります。「[」があるのがイカンらしいです。 > Debugger entered--Lisp error: (wrong-type-argument listp "(Unparsable address > bbdb-rfc822-addresses("[\x697d\x25cf\x5929]\x30c8\x30e9\x30d9\x30eb\x30cb\x [...] > bbdb-rfc822-addresses() は bbdb-snarf.el で定義されているのですが、 > (defun bbdb-rfc822-addresses ( addrline &optional ignore-errors) [...] > (parsed (rfc822-addresses thisaddr))) > この (rfc822-addresses thisaddr) 部分で [ が引っかかって、 > emacs/lisp/mail/rfc822.el の rfc822-bad-address() に至り、Unparsable > addressになってるようです。 > さて、このケースでは、emacs/lisp/mail/rfc822.el は悪くなく、つまり、楽天 > のFromの設定がrfc822違反ということになるでしょうか? その From がこんなふうにエンコードされて届いたのであれば、 From: =?ISO-2022-JP?B?WxskQjNaIXxFNxsoQl0bJEIlSCVpJVklayVLJWUhPCU5GyhC?= <[email protected]> RFC822 的には問題無くて、そういうものをデコードした結果を RFC822 用の関数に与えるのが間違いなのではないかと思います。とりあえずの 対策としては、(rfc822-addresses thisaddr) の代わりに (mapcar 'cadr (mail-extract-address-components thisaddr t)) とでもすれば、"[楽●天]" に関してだけはエラーを起こさないように なるでしょう。 しかし、デコードした結果にはどんな文字列が現れるかわかりません。 極端な話、こんな悪さもできるわけです: To: =?US-ASCII?B?PG90aGVyQGV4YW1wbGUuY29tLmludmFsaWQ+LA==?= <[email protected]> ↓ To: <[email protected]>, <[email protected]> 根本的な解は、おそらく BBDB がデコードした文字列を必要とする最後 の場面まで、受信したままの生データを扱うようにすることでしょう。 言うは易し、ですが。 -- 山岡