我一直在讨论这个想法,并希望阅读你的想法。
我想创建一个.NET服务来发送和跟踪电子邮件。
我粗略的想法:
在各种应用程序中,序列化.NET电子邮件(System.Net.Mail.MailMessage)对象的实例并将它们放入数据库或文件系统队列
邮件服务/流程轮询队列并发送电子邮件
强制订阅/取消订阅列表/规则
跟踪打开,退回,外出自动回复等。
将状态报告回原始应用程序
有没有人就如何开始或我可能遇到的问题提出建议?我应该看一下现成的软件/服务吗?
答案 0 :(得分:4)
您需要了解有关SMTP协议的所有信息,即使您使用的是更高级别的工具,也可以为您完成大部分工作。根据我自己使用.NET处理出站和入站电子邮件的经验,在我学会telnet到SMTP服务器的端口25并通过自己发出命令发送电子邮件之前,我并没有真正“得到它”。
如果要发送大量电子邮件并且需要监控NDR(无法交付的报告),则必须将SMTP信封发件人地址设置为您自己的服务器,并在他们进入数字时解析所有这些电子邮件发生了什么事。
System.Net电子邮件类不允许您在与MTA的对话中设置MAIL FROM,而无需将电子邮件标题中的发件人地址设置为相同的内容,因此您需要使用第三方库比如aspNetEmail,如果你需要那些地址不同。
ListNanny是另一个有助于解析NDR以及其他功能的工具。
我不确定序列化MailMessage对象。我认为只需存储单独的数据元素然后在需要时实例化MailMessage对象会更简单。
答案 1 :(得分:1)
您可能会发现Handling undelivered emails in webapp的一些答案很有用。
答案 2 :(得分:1)
我建议您认真考虑外包您的电子邮件服务。我已经考虑过为我的webapps构建这样的服务,但是有很多事情需要保持最新状态,这将花费你的时间远离你的主要webapp(除非你正在使这个服务成为你的服务)主要提供)。第三方服务将头痛和持续的维护排除在外。
如果你走这条路,你需要定期监控你的服务器声誉,维持与大型ISP的白名单关系,监控和处理退回,为每个ISP设置正确的消息限制,实现DKIM,VERP,SPF等功能,假设这是用于选择加入邮件,您的主要目标是确保发送的每封邮件都将落在用户的邮箱中,而不是垃圾邮件箱中。做好准备比花时间更多。
对于交易电子邮件(帐户注册确认,帐户状态报告,结算等),请查看此SO post以了解具有webapp友好API的提供商。