2012-07-18 46 views
1

我目前正在开发一个发送电子邮件的Web应用程序。用户在浏览器中执行的操作会创建传递给辅助服务器的事件,该辅助服务器将电子邮件发送给订阅了这些事件的用户。.NET中可靠电子邮件传输的选项

发送电子邮件的当前实现基本上是本地生成的SMTP服务器。我认为它是从传统系统移植到C#的,而且它相当不可靠。

我的要求是能够发送消息并了解消息的发送状态。如果他们失败了,我想知道他们为什么以及他们是否正在重试。

理想情况下,我想取消在家种的SMTP服务器并使用开源解决方案。我知道我可以在机器上运行SMTP服务器(如hMailServer),并使用.NET的SmtpClient来连接和发送消息。就其本身而言,这不会让我对消息的状态有更多的了解。

它看起来像使用hMailServer,您可以使用COM API来查询服务器并获取消息状态。这可能吗?这是一种有效的方法吗?

除了我上面概述的,还有其他的选择吗?

谢谢!

回答

2

你所要求的是不可行的整体。 (你所要求的部分是可行的。)

电子邮件会经过发件人和收件人之间的多个服务器,并且您只能控制其中的一些服务器。其余的完全失控。

您可以捕获许多发送失败,但是如果第三方垃圾邮件阻止程序在到达收件人之前阻止了您的电子邮件,则无法控制该垃圾邮件阻止程序的工作方式。你不能保证它会返回一个原因。

作为替代方案,你可以赶上了可能的错误(通过hMailServer,例如),以获得和上面说,做电子邮件营销做:跟踪电子邮件的打开,看看哪些邮件是被阅读。显然,这与交付不同。

还有更多关于如何使用.NET在这里做到这一点:http://www.codeproject.com/Articles/15109/Tracking-Emails-for-Open-Read

根据我们的经验,我们使用了一个名为从Arial Software活动的企业商业软件,它提供跟踪只是你要求的一切能力,并使用描述的“电子邮件打开”技术。它工作得很好,但它不是免费的。

有可能有其他的选择,但这将是一个产品推荐的问题,这将成为焦点在这里。我将上述内容仅作为您开展自己的研究以了解其他产品存在的起点,包括您的价格范围内的产品。


添加基于以下评论:

企图跟踪捕获的SMTP传输错误的其他选项(虽然this one看起来像它可能是很好的,和免费)。

如果你想知道的是从SMTP会话错误,你可以使用内置的.NET工具,并抓住会话跟踪为轮廓的位置:

http://www.systemnetmail.com/faq/4.10.aspx

您也可以抢如果发生SmtpFailedRecipientsException。 Documentation with code sample available at MSDN

+0

谢谢!通过hMailServer捕获错误确实是我所需要的。我不需要查看是否正在阅读电子邮件。鉴于这种尽力而为的方法是我所需要的,除了hMailServer还有其他选择吗? – Jordan 2012-07-18 16:34:52

+0

够公平的。我不确定这是您在此处发表的评论中所提问题的正确位置。这将是一个产品推荐问题,在这里将成为焦点话题。对不起,我没有更多帮助。我会删除我的答案,因为这不是你要找的东西,但我想如果我不放弃它,别人会建议同样的事情。我要离开它,所以你不会得到更多相同类型的回应。 – David 2012-07-18 16:37:40

+0

我更新了答案,以包含您可以在代码中执行的操作,其中***是***主题。我希望这有帮助。 – David 2012-07-18 16:50:47