2005年12月 1日

Linux | Tracの通知メール改造

Tracから送られてくるメールは単なるテキストなのに、マルチパートメッセージで送ってくるのがちょっと嫌だなあと思い、書いたこともないPythonのコードから該当箇所を探して修正を試みる。

運用中のTracはRPMでインストールしてあるので、とりあえずソースをダウンロードしてメールを送信しているコードを探す。きっと「smtp」という文字が含まれているだろうと予測して検索してみると、いくつか引っかかったファイルの中に「Notify.py」があり、名前からしてこれしかないと断定。

中身を見ると正しくそんな感じ。MIMEMultipart という「ズバリ私が犯人です」と言わんばかりのクラスが使われていた。コードを見る限りマルチパートである必要はなさそうなので、Pythonのリファレンスを見ながら、このクラスをMIMETextクラスに置き換える。

127行目付近

#msg = MIMEMultipart()
#msg.attach(MIMEText(body, 'plain', 'utf-8'))
#msg.epilogue = ''
msg = MIMEText(body, 'plain', 'utf-8')
これで解決。UTF-8ではなくISO-2022-JPにしてみたけど、ダメみたい。どうやら標準だと日本語コードは使えない様子。

ちなみにRPMでインストールした僕の環境の場合、/usr/lib/python2.3/site-packages/tracディレクトリにNotify.pyはありました。Tracのバージョンは0.9です。

Log4JのSMTPAppenderもマルチパートでメールを送るようになっていたのだけど(参照)、海外では単なるテキストメールもマルチパートで送るのが一般的なのかな?

Posted by otsuka : 00:06 | Comment (2) | Trackback (0)
Comment

僕もpythonは門外漢なんですが、ISO-2022-JP等を使うにはJapaneseCodecsというものをインストールする必要があるみたいですよ。

Posted by: juno : 2005年12月 1日 12:50

なるほど。これですね。
http://www.python.jp/Zope/download/JapaneseCodecs

入れてみたいけど、何かが動かなくなったりしないか不安だ。

Posted by: otsuka : 2005年12月 1日 20:28









名前、アドレスを登録しますか?