web应用中的邮件发送技巧

问题

realfun <[email protected]>
reply-to        [email protected]
to      [email protected]
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 <[email protected]>
reply-to        [email protected]
to      [email protected]
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 <[email protected]>
reply-to        [email protected]
to      [email protected]
date    Sun, Aug 31, 2008 at 15:42
subject [CPyUG:64219] Re: web端发邮件通常是怎么做的?独立线程?Cron Job?

2008/8/31 realfun <[email protected]>:

> 有道理,自己做个mock还不错
> 这样做上线之前好像还要改改啊,能不能做到不用改就直接上线呢?
> 呵呵因为本地采用了代码管理工具,文件只读,每次上线都改就稍微有些麻烦
>

比方说你本来的程序入口是code.py里的main函数,然后你发email是用一个叫 mailmodule模块的sendmail函数来发的。

那你可以另外创建一个文件叫localcode.py如下:

   1 import mailmodule
   2 def mock_sendmail(**args):
   3    # 这个就是mock函数,把你传进来的参数记录下来(比方说写在文件里)
   4    pass
   5 # 把mock给装上
   6 mailmodule.sendmail = mock_sendmail
   7 
   8 # 进入主程序
   9 import code
  10 code.main()

以后本地测试的时候,就起localcode.py,在线上跑的时候,就用code.py


反馈

创建 by -- ZoomQuiet [2008-08-31 08:13:19]

Name Password4deL ;) :( X-( B-)

PageCommentData