2008年9月16日火曜日

[Rails][ActionMailer]ActionMailerでつまずいたこと。その1

 とある諸事情で、携帯にサーバーサイドから送るという実装をしたのですがかなりつまずいた部分があったので紹介します。
 携帯でなければ、基本的にgettext(*1)を使えばlocaleをjaに設定しておくことで勝手にiso-2022-jpに変換してくれます。

gettextであれば、

sudo gem install gettext

をやったあと、
■ Rails2.0.2より前の場合
config/environmenrt.rb内前半部分に、以下の内容をいれます。


require 'rubygems'
require File.join(File.dirname(__FILE__), 'boot')
require 'jcode'
require "gettext/rails" #これを入れる。


■Rails2.1.0以降の場合
config/environmenrt.rb内前半部分に、以下の内容をいれます。


Rails::Initializer.run do |config|
config.gem "gettext", :lib => "gettext/rails" #この行を追加
end

@は、
app/controller/application.rb内に

init_gettext "syou_rails" # ""内は何をつけてもOK
GetText.locale = "ja" #念のため

をいれます。

こうすれば基本的にgettext側ですべてやってくれます。すげー便利です。
(他にもvalidateのメッセージを日本語化したりします。)

こいつは、まあうれしいのですが(というか本題と外れているね。。)
携帯にメールを送る場合、ActionMailer(TMail)が非常に困ったことをしてくれます。

というか、自動でUTF-8に変換してしまうのが。。。

続きます。


参考にさせていただいたサイト:
*1 よたらぼ保管庫 http://www.yotabanana.com/hiki/ja/ruby-gettext.html
*2 携帯の文字コードと絵文字の基礎知識:http://coderepos.org/share/wiki/Mobile/Encoding

気分一新

ということで!こっからBlogを続けていけたらいいなと思います。