【问题标题】:Methods for sending out activation emails within a web solution在 Web 解决方案中发送激活电子邮件的方法
【发布时间】:2012-04-30 23:52:51
【问题描述】:

我们有一个网站要求用户注册,然后他们会收到一封激活电子邮件

我们目前这样做的方法是将整个电子邮件过程包含在注册线程本身中,即

Register() {
   registerUser()
   sendActivationMail()
   return View(Successpage)
}

然后 sendActivationMail 包含连接到我们的邮件服务器和发送电子邮件等所需的所有代码。我们知道这不是最好的方法,而是我们只是快速地这样做以测试所有内容。问题很明显,用户最终等待“感谢您注册页面”的时间更长,因为该页面仅在其他所有操作完成后才返回。

我们知道的正确选项是:

  1. 数据库端注册完成后,开始一个新线程发送电子邮件,并立即返回原始线程。
  2. 将电子邮件保存到数据库,并有一个线程连续运行并检查数据库是否有新电子邮件每 x 分钟发送一次
  3. 使用第三方电子邮件服务,例如 Amazon Simple Email Service。

还有其他方法可以使用吗?上述任何一项是最好的吗?

提前感谢您的帮助。

【问题讨论】:

    标签: asp.net email


    【解决方案1】:

    我们使用数据库对消息进行排队,我有一个持续运行的服务应用程序,它会检查队列并将它们发送出去。我们有一堆发送电子邮件的 Web 应用程序,所以它们都放入队列中。这对我们有用。我确信它有利有弊,但就像我说的,它对我们有用。

    【讨论】:

      【解决方案2】:

      这取决于您的需求。

      方法 2 的优点是,如果发送失败,您可以重试/决定要做什么。

      另一种类似于 DB 的方法是一些队列基础结构,如 MSMQ 或其他。

      【讨论】:

        猜你喜欢
        • 2017-12-16
        • 2011-10-02
        • 2010-11-25
        • 2020-10-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-07
        • 2011-01-02
        相关资源
        最近更新 更多