前々回と前回でチケットを操作するとメールが送信されそのメールの項目が日本語になるところまで行った。
この時点で一つ問題があり、送信されたメールのエンコードが UTF-8 を base64 という文字コード(?)でエンコードしている。
base64 でエンコードされえたメールを、base64 に対応していないメーラで閲覧すると文字が化ける。
#Thundebird は OK,、サイボウズの WEB メール閲覧は NG
この対策のためにエンコードを日本語(ISO-2022-JP)に変更する手順を探していたらみつけたのがこのサイト。
trac 0.10.4@OZACC.blog
手順
詳細な手順についてはここを参照
注意点として、変更するファイルは「C:\TracLight\python\Lib\site-packages\trac*1」にある notification.py。
#前回とフォルダが違うので注意
このファイルを以下のように変更する(参考サイトより引用)
--- notification.py.orig 2007-05-11 02:08:09.000000000 +0900 +++ notification.py 2007-05-11 04:01:53.000000000 +0900 @@ -172,7 +172,9 @@ self._charset = Charset() self._charset.input_charset = 'utf-8' pref = self.env.config.get('notification', 'mime_encoding').lower() - if pref == 'base64': + if pref == 'iso-2022-jp': + self._charset = Charset(pref) + elif pref == 'base64': self._charset.header_encoding = BASE64 self._charset.body_encoding = BASE64 self._charset.output_charset = 'utf-8' @@ -345,7 +347,10 @@ headers['Cc'] = ', '.join(pcc) headers['Date'] = formatdate() # sanity check - if not self._charset.body_encoding: + if self._charset.input_charset == 'iso-2022-jp': + body = unicode(body, 'utf-8').replace(u'\uff5e', u'\u301c') + body = body.encode('iso-2022-jp') + elif not self._charset.body_encoding: try: dummy = body.encode('ascii') except UnicodeDecodeError:
コードの修正が終わったらサーバを再起動し、[管理|notification|mime_encoding] を iso-2022-jp に変更する。
この変更だと該当プロジェクトのみ変更になるので、プロジェクトごとに設定する必要がある。