##language:zh #pragma section-numbers off ##含有章节索引导航的 ZPyUG 文章通用模板 <> ## 默许导航,请保留 <> = web应用中的邮件发送技巧 = ##startInc == 问题 == {{{ realfun reply-to python-cn@googlegroups.com to python-cn@googlegroups.com date Sun, Aug 31, 2008 at 15:00 subject [CPyUG:64210] web端发邮件通常是怎么做的?独立线程?Cron Job? }}} 我发现发邮件过程比较慢,有时候用户添加一个评论,需要发邮件到被评论者邮箱和订阅者邮箱,很占时间。 实际上除了注册、密码找回等等操作,这些 是在收到request以后开一个独立线程呢,还是用Cron Job好? 我正在试Cron Job,shared host上面搞这个很麻烦。 BTW:: 发邮件的函数本地怎么测呢?同样的代码本地发邮件不会成功的。 我现在每次都辛苦的上传到server上再试,开发效率太低。 == 思路 == {{{ Jiahua Huang reply-to python-cn@googlegroups.com to python-cn@googlegroups.com date Sun, Aug 31, 2008 at 15:27 subject [CPyUG:64215] Re: web端发邮件通常是怎么做的?独立线程?Cron Job? }}} 看来你时用 smtp 同步发的。 * 简单改用本机 sendmail ( mail transport agent )就行。 * Ubuntu 的 postfix、exim4 等都提供了 sendmail == 解决 == {{{ Leo Jay reply-to python-cn@googlegroups.com to python-cn@googlegroups.com date Sun, Aug 31, 2008 at 15:42 subject [CPyUG:64219] Re: web端发邮件通常是怎么做的?独立线程?Cron Job? }}} 2008/8/31 realfun : {{{ > 有道理,自己做个mock还不错 > 这样做上线之前好像还要改改啊,能不能做到不用改就直接上线呢? > 呵呵因为本地采用了代码管理工具,文件只读,每次上线都改就稍微有些麻烦 > }}} 比方说你本来的程序入口是code.py里的main函数,然后你发email是用一个叫 mailmodule模块的sendmail函数来发的。 那你可以另外创建一个文件叫localcode.py如下: {{{#!python import mailmodule def mock_sendmail(**args): # 这个就是mock函数,把你传进来的参数记录下来(比方说写在文件里) pass # 把mock给装上 mailmodule.sendmail = mock_sendmail # 进入主程序 import code code.main() }}} 以后本地测试的时候,就起localcode.py,在线上跑的时候,就用code.py ##endInc ---- '''反馈''' 创建 by -- ZoomQuiet [<>]