【发布时间】:2012-04-30 23:52:51
【问题描述】:
我们有一个网站要求用户注册,然后他们会收到一封激活电子邮件
我们目前这样做的方法是将整个电子邮件过程包含在注册线程本身中,即
Register() {
registerUser()
sendActivationMail()
return View(Successpage)
}
然后 sendActivationMail 包含连接到我们的邮件服务器和发送电子邮件等所需的所有代码。我们知道这不是最好的方法,而是我们只是快速地这样做以测试所有内容。问题很明显,用户最终等待“感谢您注册页面”的时间更长,因为该页面仅在其他所有操作完成后才返回。
我们知道的正确选项是:
- 数据库端注册完成后,开始一个新线程发送电子邮件,并立即返回原始线程。
- 将电子邮件保存到数据库,并有一个线程连续运行并检查数据库是否有新电子邮件每 x 分钟发送一次
- 使用第三方电子邮件服务,例如 Amazon Simple Email Service。
还有其他方法可以使用吗?上述任何一项是最好的吗?
提前感谢您的帮助。
【问题讨论】: