パーソナルツール
現在の場所: ホーム takalog
書いた本
Plone 完全活用ガイド の Chapter 1, 2, 3, 11 を執筆しました。
plone のインストール、使い方から、機能・デザインのカスタマイズ、プロダクトの作り方まで、 plone のすべてがぎゅっと詰まっている書籍になっていると思います。
plone に興味がある人から、すでに使いこなしている方まで、ぜひ読んでみてください。
Plone 完全活用ガイドのサポートページ
« 2008August »
Su Mo Tu We Th Fr Sa
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            
このBlogについて
鈴木たかのりです。とりあえず日記っぽく雑多なことを書き込んでいこうと思っています。 zope/plone関係の技術的な内容については http://takanory.net の方にまとめていこうと思います。 コメント・ツッコミはご自由にどうぞ。
最近のトラックバック
新しい写真集モジュール (ロバートのブログ 03-18 08:28)
新しい写真集モジュール (ロバートのブログ 03-18 08:28)
トランペットアンサンブルコンサート (人生日記 03-08 17:37)
PloneSlimboxに乗り換え♪ (pt001-blog 02-23 17:14)
宗家カムジャタン (Happilio(ハピリオ)恋愛ブログ 02-18 15:51)
カテゴリ
puzzle (34)
mac (17)
av (25)
books (17)
coreblog (45)
ds (21)
lego (36)
misc (63)
moblog (250)
movie (31)
pc (39)
plone (203)
server (54)
suidou (29)
snowscoot (8)
sports (32)
software (122)
winds (33)
python (28)
 
文書操作

PloneFormGen のメールの文字コードを JIS にする

作成者 takanori投稿日 2008年08月05日 01時20分 最終変更日時 2008年08月05日 01時28分

久しぶりに plone ネタを書こうと思います。

Plone 完全活用ガイド でおすすめプロダクトの一つとして紹介した PloneFormGen ですが、フォームからメール送信する場合、日本語のメールが utf-8 の文字コードで base64 でエンコードされて送信します。

最近のメーラはこの形式にも対応していますが、他のプログラムで処理するときとか面倒なので普通の日本語メールのように JIS で送信してほしいところです。

このサイトの右上にもある「連絡フォーム」からメールを送信する場合は jaMailHost というプロダクトを入れると日本語メールが JIS コードで出力されます。

しかし、 PloneFormGen ではメールを送信するところで、 MailHost を使っていないため、やっぱり日本語メールは utf-8 を base64 でエンコードして出力します。

というわけで、以下のように PloneFormGen のコードを書き換えることで、日本語のメールを JIS で出力するようになります。

書き換えるのは /content/formMailerAdapter.py ファイルです。

こんな感じで書き換えます。

本文処理(560行目あたり)の変更前:

mime_text = MIMEText(body,
    _subtype=self.body_type or 'html', _charset=self._site_encoding())

attachments = self.get_attachments(fields, request)

本文処理の変更後:

jis_text = unicode(body, 'utf-8').encode('iso-2022-jp')
mime_text = MIMEText(jis_text,
    _subtype=self.body_type or 'html', _charset='iso-2022-jp')

attachments = self.get_attachments(fields, request)

ヘッダ部分(780行目あたり)の変更前:

# transform subject into mail header encoded string
msgSubject = str(Header(self.secure_header_line(subject), self._site_encoding()))
headerinfo['Subject'] = msgSubject

ヘッダ部分の変更後:

# transform subject into mail header encoded string
msgSubject = self.secure_header_line(subject).encode('iso-2022-jp')
msgSubject = str(Header(msgSubject, 'iso-2022-jp'))
headerinfo['Subject'] = msgSubject

やっていることは簡単で、ヘッダや本文として設定されている文字列が、初期状態では utf-8 でエンコーディングされているので、それを強制的に JIS(iso-2022-jp) でエンコーディングしなおしています。

これで PloneFormGen から送信されるメールが JIS になります。めでたしめでたし。

# 日本語以外の文字が混ざった場合には対応できませんのでご注意ください

カテゴリ
plone plone
トラックバック用URL:
http://takanory.net/takalog/946/tbping

Powered by vine linux, python, zope, plone, coreblog