MailHostで日本語を使う

2007/09/29 更新

  Zopeには MailHostという DTML から行うメール送信の仕組みがあります。しかし、オリジナルの Zopeの配布物では、メールヘッダーも、メールボディーも、 as is で送信されるため、日本語を正しく取り扱うことができません。
 これに対して、安田さんがメールヘッダー及びボディーのエンコードを変換する Products (hotfix)を作って下さいました。

 2.5.x の場合は、この hotfixを当てればよいのですが、2.6.x の場合は、MailHostの処理が変わってしまって、この hotfixが使えなくなってしまいました。そこで、安田さんの hotfixを元に、2.6.x用のhotfixを私が作りました。

2.7.x 以降の場合

 以下の jaMailHost のアーカイブを使います。
 ダウンロードしたアーカイブを $(INSTANCE_HOME)/Products に展開して、 Zope を再起動すると MailHostオブジェクトがコード変換するものに変わります。
変換元の文字コードは、MailHost の Titleプロパティに設定してやる必要があります。 例えば、DTML に utf-8 で記述して、日本語のメールを送りたい場合は、MailHost の Title プロパティに 'utf-8' を設定して下さい。 

 Zope 2.8 以前で動作させる場合には、jaMailHost のほかに、JapaneseCodecs が必要です。

2.6.x の場合

 2.6.xの場合は、 以下の jaMailHost のアーカイブを使います。 ダウンロードしたアーカイブを lib/Python/Products に展開して、 Zope を再起動すると MailHostオブジェクトがコード変換するものに変わります。

jaMailHost 0.2.x の場合

 jaMailHost のほかに JapaneseCodescs が必要です。
 デフォルトでは、DTML が UTF-8 で書かれていることを想定して、それを iso-2022-jp に変換します。
 __init__.py の SOURCE_ENCODING = 'UTF-8' の部分を 'EUC-JP' に変更することにより、DTML に EUC-JP で記述することもできます。

jaMailHost 0.1.x の場合

 jaMailHost のほかに pykf もしくは kconv もしくは kanjilib もしくは JapaneseCodecs が必要です。
 詳しくは、アーカイブ内の README.ja を参照してください。


 jaMailHostの 0.1.2 までのバージョンは、ライセンス表記に問題があったため、削除します。

 なお、2.6.0 では Zopeの日付時刻の処理にバグがあります。
 http://www.zope.org/Members/regebro/datetime_260_fix
にある DateTime.pyを lib/python/DateTime ディレクトリにコピーして下さい。

2.5.xの場合

 2.5.x の場合は、安田さんの jMailHost http://www.zope.org/Members/yukihiro の jMailHostを使います。

 詳しいことは、アーカイブ内の README.ja を参照してください。

制限

 複数行にまたがるヘッダーや、長い文字列の折り返しは考慮されていません。そのため、Subject: From: To: Cc: の文字数は制約を受けます。

謝辞


Zope メモ