【问题标题】:How do I create an email-sending service?如何创建电子邮件发送服务?
【发布时间】:2008-10-02 20:17:20
【问题描述】:

我一直在考虑这个想法,并想了解您的想法。

我想创建一个 .NET 服务来发送和跟踪电子邮件。

我的粗略想法:

  1. 在各种应用程序中,序列化 .NET 电子邮件 (System.Net.Mail.MailMessage) 对象的实例并将它们放入数据库或文件系统队列中

  2. 邮件服务/进程轮询队列并发送电子邮件

  3. 强制订阅/取消订阅列表/规则

  4. 跟踪打开、退回、不在办公室自动回复等。

  5. 向原始应用程序报告状态

有人对我应该如何开始或我可能遇到什么问题有什么建议吗?是否有我应该查看的现成软件/服务?

【问题讨论】:

    标签: .net email


    【解决方案1】:

    您需要尽可能了解 SMTP 协议,即使您使用的是为您完成大部分工作的高级工具。根据我自己使用 .NET 处理出站和入站电子邮件的经验,直到我学会 telnet 到 SMTP 服务器的端口 25 并通过自己发出命令来发送电子邮件时,我才真正“明白”。

    如果您要发送大量电子邮件并且需要监控 NDR(无法送达报告),则必须将 SMTP 信封发件人地址设置为您自己的服务器,并在所有这些电子邮件进入时解析它们知道发生了什么。

    System.Net 电子邮件类不允许您在与 MTA 的对话中设置 MAIL FROM,而无需将电子邮件标题中的 From 地址设置为相同的东西,因此您需要使用第 3 方库如果你需要不同的地址,比如aspNetEmail

    ListNanny 是另一个有助于解析 NDR 的工具以及其他功能。

    我不确定是否要序列化 ​​MailMessage 对象。我认为只存储单独的数据元素本身然后在需要时实例化 MailMessage 对象会更简单。

    【讨论】:

      【解决方案2】:

      您可能会发现Handling undelivered emails in webapp 的一些答案很有用。

      【讨论】:

        【解决方案3】:

        我建议您认真考虑外包您的电子邮件服务。我也考虑过为我的 webapps 构建这样的服务,但是有很多事情你必须保持在上面,这会占用你的时间远离你的主要 webapp(当然,除非你把这个服务作为你的主要产品)。第三方服务解决了令人头疼的问题和持续的维护问题。

        如果您走这条路,您将需要定期监控您的服务器声誉,维护与大型 ISP 的白名单关系,监控和处理退回邮件,为每个 ISP 设置正确的消息限制,实施 DKIM、VERP、SPF 等功能,等等。假设这是用于选择加入的邮件,您的主要目标是确保发送的每封邮件都将进入用户的邮箱,而不是他们的垃圾邮件箱。准备好花费比您意识到的更多的时间。

        对于交易电子邮件(帐户注册确认、帐户状态报告、计费等),请查看此SO post 供具有 webapp 友好 API 的提供商使用。

        对于营销电子邮件和大量选择加入邮件,请查看此SO post。我刚刚将MailChimp 添加到该列表中。

        【讨论】:

          猜你喜欢
          • 2022-01-23
          • 2011-01-26
          • 1970-01-01
          • 2012-10-09
          • 1970-01-01
          • 1970-01-01
          • 2017-08-05
          • 2014-08-12
          • 1970-01-01
          相关资源
          最近更新 更多