【发布时间】:2016-05-17 22:45:44
【问题描述】:
我正在计划开发一个邮件服务器,以便在我们的多个网站上发送电子邮件。以下是我们计划实施的说明,我想听听您的意见/建议。
我们使用 ASP.NET MVC,并且在 Azure 上托管了许多网站。我们目前使用 SMTPServer.Send() 在每个 Web 应用程序内部发送邮件。显然,当您有一组相当繁忙的网站时,这不是发送电子邮件的理想方式,因为发送邮件呼叫被阻塞并且不能保证发送邮件。有了这个,我担心在我们启动下一个网站时会收到大量的邮件请求(我们认为它会获得相当多的流量并且会发送大量电子邮件)。
我的行动计划:构建一个在后台运行的集中式邮件服务器(我们使用 azure,这将只是另一个 Web 应用程序)。当我们的每个 Web 应用程序想要发送邮件时,它不会在内部执行此操作,而是会调用邮件服务器上名为 sendMail() 的 Web 方法,此函数将接受某些参数并插入邮件参数、内容等。入数据库。然后邮件服务器将以固定的时间间隔轮询数据库,选择一组未发送的电子邮件并尝试使用相同的 SMTPServer.Send() 函数发送它们。如果电子邮件由于某种原因失败,我们不会将其标记为已发送,并且在下一个轮询间隔中,将再次选择该电子邮件并进行另一次发送尝试。 (我们会将发送尝试的次数限制为 20 次)。
这将允许每个网站顺利运行,而不会在内部产生大量阻塞发送邮件调用,并且邮件服务器将在受控环境中作为单独的独立 Web 应用程序按顺序处理所有发送。 提前致谢!
【问题讨论】:
标签: asp.net-mvc email mail-server