TMail 携帯メールアドレス問題
○なにが、問題なのか。
DoCoMoのメールアドレスは、RFC 2822 に準拠していないので TMail ではじかれる。
例)hoge..hoge.@docomo.ne.jp
なので、メールを受信して、Railsでいろいろやろうとしても、アドレスがおかしいと、TMailで弾いてしまう。
○現象を再現。ruby script/console でテスト
mail = TMail::Mail.new mail.from = 'hoge..hoge.@docomo.ne.jp' mail.from #=> nil
結果は、nil
○解決のヒント
http://i.loveruby.net/svn/public/tmail/trunk/ChangeLog
Sun Oct 29 13:05:34 2006 Minero Aoki <aamine@loveruby.net> * lib/tmail/parser.y (dots): allow many dots for mobile phone addresses.
○解決方法
つまり、最新のTMailにすればよい。
# svn checkout http://i.loveruby.net/svn/public/tmail/trunk/ # cd trunk # ruby setup.rb config # ruby setup.rb setup # ruby setup.rb install
○確認
mail = TMail::Mail.new mail.from = 'hoge..hoge.@docomo.ne.jp' mail.from => ["hoge..hoge.@docomo.ne.jp"]
結果は、おk!
ふー。
※注意
しかし、ドットが3個連続(@マーク前はドット2個以上連続)するとエラーになってしまう・・・。うーむ。中途半端な対応ですね・・。
※注意2
Linux環境で最新のTMailにアップデートした場合に、
/usr/lib/ruby/site_ruby/1.8/i686-linux/tmail/base64.so
↑このファイルが出来ますが、TMailを使ったbase64エンコードがうまくいかない場合は、これを削除すると良いかもしれません。(携帯の添付画像取得等の際に使うと思います)
# rm /usr/lib/ruby/site_ruby/1.8/i686-linux/tmail/base64.so
※注意3
http://i.loveruby.net/svn/public/tmail/trunk/
↑のソースは古いものなので、
http://rubyforge.org/frs/?group_id=4512
↑こちらからダウンロードしたものを利用した方が良いと思われます。