• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:IMAP4でsubjectが検索ヒットしない)

IMAP4でsubjectが検索ヒットしない

このQ&Aのポイント
  • IMAP4でsubjectが検索ヒットしない問題について解決方法を探しています。
  • メールサーバのdovecot-1.0.7でIMAPを使用してsubjectを検索すると、一致しているワードが含まれているにもかかわらずヒットしない場合があります。
  • SUBJECTがISO-2022-JPでエンコードされているため、件名が長い場合には分割されるようです。しかし、分割されている場合は個別にしか検索してくれないため、単語がバラバラになった場合には検索にヒットしません。この問題を解決する方法についてアドバイスをお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.1

>SUBJECTはISO-2022-JPでエンコードされているようですが  いえ、本来は、BASE64エンコードされているはずです。時々iso-2022jpのものなども見かけますが、MUAで受信するとSubject:が文字化けしているものもあります。  iso2022jpに変換したのち、下記の仕様にしたがって  ⇒( http://www.akanko.net/marimo/data/rfc/rfc2045-jp.txt )  変換されたものであるはずです。  本来は、1so-2022jpなりにエンコードした後で、ascii以外(厳密には違う)の文字をbase64エンコードします。 → UmU6IOazqOaEj++8muS7iuaciOOBruaui+mHkeOBjDIwMTMxMTExMDDlhobjgafjgZnjgII= 本来は、 → =?ISO-2022-JP?B?GyRCQ20wVSEnOiM3biROO0Q2YiQsGyhCMjAxMzExMTEw?= =?ISO-2022-JP?B?MBskQjFfJEckOSEjGyhC?= 出なければならない。2行に分かれていますね。これは、「encoded-word は 75バイト以内でなければならない.」というルールによるものです。  様々なMUA、特にメールフォームなどで送信されてくるメールヘッダには、正式なルールに従っていないものがあります。 ★対策:一旦iso2022jpにデコードしてから検索する。  この時に、改行コードは削除されて一行に戻るはずです。 Perlでしたら、  ⇒Base64エンコード・デコードする( http://www.din.or.jp/~ohzaki/perl.htm#JP_Base64 ) を参考にしてください。

john_shishi
質問者

お礼

確かにBASE64でエンコードされていますね。この辺の知識がおぼろげだったので 認識改めました。 使用しているMUAは改行コードが削除される前に検索をしていたようです。 IMAPのsearchを使っているようで、ここに問題がありそうでした。 ありがとうございます。

関連するQ&A