COREBlog2をPlone3で動かすための修正: コメント時のメール送信¶
12/4修正。間違いが多かったため書き直しました。Plone3やZope2.10系の問題だと書いていたのですが、Zope2.9.10 + Plone-2.5.5でも発生します。
Plone-3.3.2 にアップグレードして公開 したときの課題からは抜けていたのですが(今日気づいた)、COREBlog2を setdefaultencoding('utf-8') 無しで動かしたとき、そのままではコメント時やトラックバック時にメール送信が行われない場合があります。
- 対象:
COREBlog2_nightly.tgz (2008/10時点)
- Plone:
Plone-3.3.2
- Zope:
Zope-2.10.9
以前の環境でエラー無くメール送信が行われていた理由は、 sitecustomize.py に sys.setdefaultencoding('uft-8')
と書いていたためだと思います。今回の環境では sitecustomize.py 無しで動かそうとしているので、translateメソッドからUnicodeオブジェクトが返ってくるのと、REQUESTからの値を結合しようとしたときに、予期しないUnicodeDecodeErrorとなったためです。
という前置きはさておき、修正方法。
skins/COREBlog2/cbaddComment:
to_addr = context.getNotify_to()
from_addr = context.getNotify_to()
- msgbody = context.translate(msgid='comment_notify_body')
+ msgbody = context.translate(msgid='comment_notify_body').decode('utf-8')
elements = {}
for k in ('title','author','url','body'):
if REQUEST.form.has_key(k):
elements[k] = REQUEST.form[k]
else:
elements[k] = ''
elements['post_ip'] = REQUEST.getClientAddr()
elements['entry_url'] = context.absolute_url()
msgbody = msgbody % (elements)
- msgsubject = context.translate('comment_notify_title')
+ msgsubject = context.translate('comment_notify_title').decode('utf-8')
mgsheader = """To: %s
同様に skins/COREBlog2/tbping も translate
しているところを修正します。
これでコメントが正しくメール通知されるようになりました。