turbomail有简单用法


                                   因为在做评测系统时,有时会用到向测试者发送邮件的问题,所以找到了Turbomail这个软件。TurboGears可以使用turbomail来发邮件。内容参考自互联网,在此一并感谢。大家可以参考http://www.python-turbomail.org/,这个是Turbomail的主站点。
   安装很简单,使用easy_install Turbomail,就安装好了,也可以下载源代码来安装。比较简单,就不多说了。
   原理上来说,Turbomail使用python自带的smtplib库来发送邮件的。
   它的运行要依赖于turbogears生成的项目,为了测试它的功能,我们可以生成一个简单的tg工程。
1.cmd>tg-admin quickstart -s tbmail,然后转到tbmail目录下
2.编辑dev.cfg文件,在其中加上四行:
  mail.on=True
  mail.server='smtp.xxxx@isp.com' #改为你自己的发信smtp服务器
  mail.username='your username@isp.com'
  mail.password='your password'
  保存退出
3.测试,没有使用数据库,所以没有改动model.py,直接在controllers.py中加代码。
  
               
               
                import turbomail
class Root(controllers.RootController):
    @expose()
    def index(self,**kw):
        raise redirect('/writemail')
    @expose(template="tbmail.templates.mail")
    def writemail(self):
        return dict()
    @expose()
    def sendmail(self,fromaddr, toaddr, subject,**kw):        
        message = turbomail.Message(fromaddr, toaddr,subject)
        message.plain = 'hello ! turbomail test'        
        turbomail.enqueue(message)
        return dict()
4.在tbmail.templates目录下copy文件welcome.kid,并重命名为mail.kid.内容为一个提交邮件的form。

.....
body>
form action="/sendmail" method="post">
    input type="text" name="fromaddr"/>
        input type="text" name="toaddr"/>
        input type="text" name="subject"/>
        input type="submit" name="submit" value="send"/>
    /form>
/body>
5.tbmail> start-tbmail.py。启动完成后,打开IE或FF,输入http://localhost:8080/
   在三个输入框中,填入发信地址,收信人地址,主题,然后点发送按钮。邮件就发出去了。
   遇到的问题是,用我的163的smtp服务器发信,提示SMTPAuthor问题,不能通认证,而sina的smtp服务器则没有问题。http://czug.org/blog/panjy/2006/6/dui163youxiangdezhichi 可以看到问题的根源,在于163使用login认证,是MS提出的一种非标准方式,而python的smtplib实现是只是标准,所以默认没有支持。可以需要修改turbomail的源码。
7.找到实例SMTP()的地方,添加如下两行试试:  
    smtpserver.esmtp_features["auth"]="LOGIN"
    smtpserver.login(userid, password)
8.不过我是egg文件,没有找到源文件修改的地方。如果有谁懂的,还望不吝赐教。我是偷懒了下,正好有个sina的邮箱,就用了smtp.sina.com.cn做服务器了。呵呵!