如何在应用程序开发中构建可扩展的电子邮件通信系统?

时间:2015-11-18 12:16:11

标签: .net email azure web-applications

我们正在开发托管在Microsoft Azure云平台中的企业应用程序。当我们与任何企业公司达成协议时,他们会为相对较多的用户购买许可证。 (每位客户最少5,000名员工)

我们的应用程序通常需要向某个客户群发送电子邮件。 随着客户(租户)数量的增加,我们系统发送的电子邮件数量将逐渐增加。

由于我们使用其中一个电子邮件提供商(例如Gmail,office365)SMTP服务器将电子邮件分发给我们的客户,因此我们现有的解决方案已经开始受到限制。由于这些提供商每天都有一些发送电子邮件的限制,我们最近开始达到极限。为了解决这个问题,我们开始通过不同的电子邮件帐户发送电子邮件。 显然,创建新的电子邮件帐户并不是一个好的解决方案。

我们想要的是拥有中心电子邮件系统,它将为所有租户提供服务而不会出现任何问题。如果我们需要发送一百万封电子邮件,如果我们在所有租户中拥有百万最终用户,那么潜在的解决方案也应该为横向扩展方案做好准备,我们不需要更改代码,相反,我们可以增加电子邮件系统的实例应用

我相信像Facebook或Twitter这样的应用程序每天都会发送超过1M的电子邮件。您认为他们如何管理这些电子邮件通信?是否有任何文章可以从我们构建此系统时学到一些东西。或者你可以建议的任何方法。

提前致谢。

P.S:希望我写这个问题来纠正StackOverFlow社区。

3 个答案:

答案 0 :(得分:1)

除了发送大量电子邮件的问题之外,您还需要担心的另一件事是发送不会被收件人的邮件服务器阻止的电子邮件(这通常发生在您将邮件服务器托管在云端时)。

我建议调查一下SendGrid。他们对Azure和AFAIK有特殊计划,每天发送的电子邮件数量没有限制(您只需根据您的电子邮件要求选择一个计划)。您可以在此处了解有关它们的更多信息:https://azure.microsoft.com/en-in/marketplace/partners/sendgrid/sendgrid-azure/

答案 1 :(得分:0)

SendGrid是一个很好的选择,我以前用它来发送数百万封电子邮件。还有其他选项,如Mandrill,Mailgun,Amazon SES等。

取决于您想要的功能。有些人也可以帮助处理入站电子邮件。有些工具可以模拟出站电子邮件或进行A / B测试,跟踪点击和开放率等

这个网站列出了几个选项,但SendGrid可能是领导者。 http://alternativeto.net/software/sendgrid/

答案 2 :(得分:0)

如果您打算开发自己的电子邮件解决方案。我最初建议注册一个电子邮件提供商 - 例如Sendgrid / Amazon SES - 只是因为它可以让你运行得非常快,只需几行代码即可。

一旦运行并按预期工作,您就可以根据您使用该服务所学到的知识开始开发自己的解决方案。

此时,您可以慢慢地将用户从电子邮件服务迁移到您自己的解决方案。

建立一个发送一百万封电子邮件的解决方案并不难(嗯......)确保将邮件发送到收件箱很困难。如果有一个简单的方法可以做到这一点,垃圾邮件发送者就会这样做。

因此,虽然您可以使用DKIM等提供额外的验证,但您主要依赖于批量提供商,因为它们是批量提供商。

这是facebook et al。管理以运行自己的服务,因为他们受到黑名单公司的信任,并且没有太多人将其邮件标记为垃圾邮件。

逐步提升,非常关注篮板(确保您不再发送到这些地址)使用用户名来个性化消息。使用多个IP地址发送。

最终,配置自己的批量电子邮件服务既费时又费时。在某种程度上,您可以非常快地需要一名常任工作人员保持整个过程顺利进行(并让您远离黑名单)

为自己节省很多头痛的事情并付钱给那些做生意的人。