Date:
2005-09-06
Ploneのワークフローでメール通知する¶
ryouseiさんの資料 を横目で見つつ、 [zope-users:04900] [Q] customize workflow with script を参考にしながら作ってみました。 それにしても、スクリプトが受け取る引数の型がStateChangeInfoだとか、StateChangeInfo.objectが対象ページのインスタンスだとか、どうやって知るんだろう?自分は前述の資料とgrepで知りました。
以下、とりあえず動くスクリプトです。
emailモジュールを使っているので、Script(Python)で使えるようにしておく必要があります。
## Script (Python) "mail_notify"
##bind container=container
##bind context=context
##bind namespace=
##bind script=script
##bind subpath=traverse_subpath
##parameters=sci
##title=
##
try:
mail = container.MailHost
hist = sci.getHistory()
hist = hist[-1]
obj = sci.object
data = []
data.append( "URL: " + obj.absolute_url() )
data.append( "Date: " + str(sci.getDateTime()) )
data.append( "Actor: " + hist['actor'])
data.append( "Title: " + obj.title_or_id() )
data.append( "Desc: " + obj.Description() )
data = '\n'.join(data)
from email.Header import Header
title = Header(unicode(obj.title_or_id(),'utf-8').encode('iso-2022-jp','replace'), 'iso-2022-jp')
msg = """\
From: test@example.com
To: test@example.com
Subject: published: %s
Content-Type: text/plain; charset="iso-2022-jp"
Page published.
%s
""" % (title, data)
msg = unicode(msg,'utf-8').encode('iso-2022-jp','replace')
mail.send(msg)
except:
pass