メールでチケット登録時に題名が文字化けする問題を修正

2010-07-16 10:45  •  分類:

Redmine 2.0では本記事で説明する対策は不要です。日本語のサブジェクトも文字化けせずに登録できます。

Redmineにはメールでチケットを登録する機能があります。メールのサブジェクトと本文がそれぞれチケットの題名と説明として登録されますが、Redmine 0.9ではサブジェクトに日本語が含まれていると題名が文字化けして登録されてしまいます。

原因

メールのサブジェクトで日本語を使用する場合、元の内容をISO-2022-JPとBASE64でエンコードした文字列が使われます。

このようにエンコードされた文字列をデコードするためにRedmineはRuby on Railsに同梱されているTMailと呼ばれるライブラリを使用しています。RedmineはTMailがサブジェクトをUTF-8にデコードすることを期待していますが実際にはISO-2022-JPにデコードされます。

結果、エンコーディングがUTF-8の文字列が期待されているところにISO-2022-JPの文字列が記録されてしまい、Redmineの画面上で文字化けが発生してしまいます。

対策

メールのサブジェクトをISO-2022-JPではなくUTF-8にデコードするようRuby on Railsに同梱されているTMailライブラリのTMail::UnstructuredHeader.parseメソッドの動作を変更するパッチを作成しました。本パッチを適用することにより、メールの件名が文字化けする問題を回避することができます。

パッチの動作環境

Redmine 0.9.6(+Ruby on Rails 2.3.5)で動作確認しました。

インストール方法

1. 修正ファイルのダウンロード

farend_mail_handler_ja_subject_fix.rb

2. 修正ファイルのコピー

ダウンロードしたファイルを、Redmineのインストールディレクトリの config/initializers/ 以下にコピーしてください。

3. Redmine再起動

Redmineを再起動してください。修正ファイルによりRuby on Railsにパッチが適用され、問題が解決します。

関連情報

作成: 2010-07-16 10:45  •  分類: