net/imap は Ruby に標準添付のライブラリであり、IMAP の操作を容易に行うことが出来る。
以下、Tips.
以下、Tips.
マルチバイトの IMAP フォルダー名は modified UTF-7 でエンコードされる。
これは Net::IMAP.encode_utf7, Net::IMAP.decode_utf7 関数を用いて encode/decode 出来る。
入出力は UTF-8 である。
なぜか Ruby 公式のリファレンスマニュアルでは言及されていないので、ソースを直接見ると良い。
例えば 1.8 なら /usr/lib/ruby/1.8/net/imap.rb 辺りにある。
UTF-8 とローカルの文字コードの間で変換が必要であれば Kconv を用いると良い。
これは Net::IMAP.encode_utf7, Net::IMAP.decode_utf7 関数を用いて encode/decode 出来る。
入出力は UTF-8 である。
なぜか Ruby 公式のリファレンスマニュアルでは言及されていないので、ソースを直接見ると良い。
例えば 1.8 なら /usr/lib/ruby/1.8/net/imap.rb 辺りにある。
UTF-8 とローカルの文字コードの間で変換が必要であれば Kconv を用いると良い。
メールヘッダ中のエンベロープ(SUBJECT や FROM 等)にマルチバイトを含む場合、通常は MIME エンコードされている。
これは NKF.nkf を用いると良い。
NKF.nkf("-M", str), NKF.nkf("-m", str) とすることで encode/decode 出来る。
これは NKF.nkf を用いると良い。
NKF.nkf("-M", str), NKF.nkf("-m", str) とすることで encode/decode 出来る。
rubymail を使うと良い。
net/imap で RFC822 を fetch して RMail::Parser.read メソッドに食わせてやると良い。
ただし、うちの環境では RMail::Parser.read が CRLF を上手く解さなかった。
その場合 .attr["RFC822"].gsub(/\r\n/, "\n") のように LF に直して食わせてやると良い。
net/imap で RFC822 を fetch して RMail::Parser.read メソッドに食わせてやると良い。
ただし、うちの環境では RMail::Parser.read が CRLF を上手く解さなかった。
その場合 .attr["RFC822"].gsub(/\r\n/, "\n") のように LF に直して食わせてやると良い。
list メソッドのワイルドカード
タグ
コメントをかく