【问题标题】:.NET MVC Custom Mail Server.NET MVC 自定义邮件服务器
【发布时间】: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


    【解决方案1】:

    看起来不错的设计,但不知道让您构建类似电子邮件服务器的整个场景。通过使用 Office 365 等已经存在的服务已经很好地解决了这个问题。

    你的设计不错,我的建议如下,

    您可以使用 Azure WebJobs 来构建轮询代理。您可以将 Web 作业作为计划的 Web 作业运行,该作业执行轮询和发送邮件,并且可以将其编写为非常简洁的简单控制台应用程序。

    您可以使用 Azure API 应用程序来构建 SendMail() 调用,并且您可以使用 API 上的 Azure AD Auth 使用身份验证和授权功能对 API 的调用者进行身份验证,以轻松保护您的电子邮件服务器。 您还可以轻松启用 CORS,以确保您收到来自其他网站的请求并进行处理。

    我为你预见的一些问题,

    1. 音量和缩放 :您只能在每次轮询之间处理这么多电子邮件。如果你不能,那么你将需要创建另一个轮询代理,这会使事情变得复杂,因为他们需要知道他们正在选择不同的电子邮件集来发送。如果你的音量会很低,你应该没问题。
    2. 挑战:为什么网站不能自己发邮件?然后将其记录在数据库中进行跟踪。您所要做的就是构建模块或他们在网页上使用的组件来创建和发送邮件。 Polymer 1.0 非常适合这种情况。

    希望这有助于您入门。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-11
      • 2018-11-19
      • 2011-07-31
      • 2012-03-18
      • 2021-07-16
      相关资源
      最近更新 更多