「のうはう色々」の編集履歴(バックアップ)一覧はこちら
「のうはう色々」(2008/08/21 (木) 18:44:13) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
*のうはう色々
**メール送信のうはう
**やりたいこと
+メールをiso2022jpで送信したい。
+SenderID/SPFなどに対応するために各ヘッダーを変更したい。特にreturn-path
**考え方と現状
-基本ActionMailerをベースにする
-ActionMailerではメールボディの文字コード変換まではサポートされている。でもsubjectやfromに日本語が入ると化ける
-ActionMailerを拡張したIso2022jpMailerというライブラリがActiveHeartプラグインに付属するが、subjectを変換してなれないなど、いま一歩感が残る。
-プラグインなどで「これが一般的!」というのは無い? みんなIso2022jpMailerベースで必要なところだけ文字コード変換して使ってるのかな?
-だとするなら、ActionMailerのdeliver*メソッドで必要部分だけNKFなどで変換すれば、別途プラグインを使う必要はないのでは? bodyの変換機能はデフォルトで付いてるし。
-てかそれってDRYの原則に反してるよね。
-結局何がベスト?
config/environment.rbの最後に
>ActionMailer::Base.sendmail_settings = {
> :location => '/usr/sbin/sendmail',
> :arguments => '-i -t -f from.mailaddress@example.com
>}
>ActionMailer::Base.delivery_method = :sendmail
>#ActionMailer::Base.delivery_method = :smtp
>ActionMailer::Base.raise_delivery_errors = true
>ActionMailer::Base.default_charset = 'iso-2022-jp'
を追加。sendmailの-fオプションで送信元メールアドレスとreturn-pathに使うアドレスを指定。
モデルはこんな感じ。コントローラーからdeliver_to_logined_user(object, user)で呼ぶ。
>class Notifier < Iso2022jpMailer
> def to_logined_user( object, user )
> # Email header info MUST be added here
> recipients user.mail_address
> from "from.address.for.header@example.com"
> # 必要なところでiso2022jp変換+base64エンコードする
> subject "[static message]" + base64("日本語にほんご")
> # うまく使えないけど、ヘッダーに文字は入る
> # headers "¥r¥nReturn-Path" => "return-path.address.for.header@exapmle.com"
> # Email body substitutions go here
> body :object_for_view => object, :user_for_view => user
> end
> def base64(text, charset="iso-2022-jp", convert=true)
> if convert
> if charset == "iso-2022-jp"
> text = NKF.nkf('-j -m0', text)
> end
> end
> text = [text].pack('m').delete("\r\n")
> "=?#{charset}?B?#{text}?="
> end
>end
このbase64メソッドを標準でどこかのプラグインに入れておけば良いのかなぁ。
**日本語解説ページ
-[[優しいRailsの育て方|Action Mailer>>http://wota.jp/ac/?date=20050731]]
-[[Nasuta開発ブログ|メール配信の実装>>http://nasuta.seesaa.net/article/17245391.html]]
-[[Railsアプリケーションからメール送信(Iso2022jpMailer)>>http://wiki.matake.jp/doku.php?id=ruby_on_rails:%E3%83%A1%E3%83%BC%E3%83%AB%E9%80%81%E4%BF%A1%EF%BC%88iso2022jpmailer%EF%BC%89]]
**日本語処理のうはう
-[[Rubyでの日本語文字列処理>>http://www.yohasebe.com/articles/2006/03/16/japanese%20chraracters%20in%20ruby%20scripts]]
**デプロイのうはう
-[[masuidrive on rails|「設定より規約」でWebサーバ設定の自動化>>http://blog.masuidrive.jp/articles/2006/07/20/conversion-over-configuration-with-apache]]
※増井さんのスクリプト興味あるなぁ
**コメント
#pcomment(reply)
*のうはう色々
**メール送信のうはう
**やりたいこと
+メールをiso2022jpで送信したい。
+SenderID/SPFなどに対応するために各ヘッダーを変更したい。特にreturn-path
**考え方と現状
-基本ActionMailerをベースにする
-ActionMailerではメールボディの文字コード変換まではサポートされている。でもsubjectやfromに日本語が入ると化ける
-ActionMailerを拡張したIso2022jpMailerというライブラリがActiveHeartプラグインに付属するが、subjectを変換してなれないなど、いま一歩感が残る。
-プラグインなどで「これが一般的!」というのは無い? みんなIso2022jpMailerベースで必要なところだけ文字コード変換して使ってるのかな?
-だとするなら、ActionMailerのdeliver*メソッドで必要部分だけNKFなどで変換すれば、別途プラグインを使う必要はないのでは? bodyの変換機能はデフォルトで付いてるし。
-てかそれってDRYの原則に反してるよね。
-結局何がベスト?
config/environment.rbの最後に
>ActionMailer::Base.sendmail_settings = {
> :location => '/usr/sbin/sendmail',
> :arguments => '-i -t -f from.mailaddress@example.com
>}
>ActionMailer::Base.delivery_method = :sendmail
>#ActionMailer::Base.delivery_method = :smtp
>ActionMailer::Base.raise_delivery_errors = true
>ActionMailer::Base.default_charset = 'iso-2022-jp'
を追加。sendmailの-fオプションで送信元メールアドレスとreturn-pathに使うアドレスを指定。
モデルはこんな感じ。コントローラーからdeliver_to_logined_user(object, user)で呼ぶ。
>class Notifier < Iso2022jpMailer
> def to_logined_user( object, user )
> # Email header info MUST be added here
> recipients user.mail_address
> from "from.address.for.header@example.com"
> # 必要なところでiso2022jp変換+base64エンコードする
> subject "[static message]" + base64("日本語にほんご")
> # うまく使えないけど、ヘッダーに文字は入る
> # headers "¥r¥nReturn-Path" => "return-path.address.for.header@exapmle.com"
> # Email body substitutions go here
> body :object_for_view => object, :user_for_view => user
> end
> def base64(text, charset="iso-2022-jp", convert=true)
> if convert
> if charset == "iso-2022-jp"
> text = NKF.nkf('-j -m0', text)
> end
> end
> text = [text].pack('m').delete("\r\n")
> "=?#{charset}?B?#{text}?="
> end
>end
このbase64メソッドを標準でどこかのプラグインに入れておけば良いのかなぁ。
**日本語解説ページ
-[[優しいRailsの育て方|Action Mailer>>http://wota.jp/ac/?date=20050731]]
-[[Nasuta開発ブログ|メール配信の実装>>http://nasuta.seesaa.net/article/17245391.html]]
-[[Railsアプリケーションからメール送信(Iso2022jpMailer)>>http://wiki.matake.jp/doku.php?id=ruby_on_rails:%E3%83%A1%E3%83%BC%E3%83%AB%E9%80%81%E4%BF%A1%EF%BC%88iso2022jpmailer%EF%BC%89]]
**日本語処理のうはう
-[[Rubyでの日本語文字列処理>>http://www.yohasebe.com/articles/2006/03/16/japanese%20chraracters%20in%20ruby%20scripts]]
**デプロイのうはう
-[[masuidrive on rails|「設定より規約」でWebサーバ設定の自動化>>http://blog.masuidrive.jp/articles/2006/07/20/conversion-over-configuration-with-apache]]
※増井さんのスクリプト興味あるなぁ
**Ajax系のうはう
ここらへん読むとRailsとjson-pの絡ませ方がわかる気がする
-[[JSON-P on Rails with JQuery>>http://actsasflinn.com/articles/2008/04/20/jsonp-on-rails-with-jquery]]
-[[Cross domain RESTful JSON-P with Rails>>http://actsasflinn.com/articles/2008/06/13/cross-domain-restful-json-p-with-rails#railscachingjsonp]]
**コメント
#pcomment(reply)