ASP.NET MVC如何确定电子邮件未被接收者接收?

3
在我的 Web 应用程序中,每个新注册的用户都会收到一封包含凭据信息的电子邮件。
但是,某些邮件提供商(如 Hotmail)似乎不接受这些邮件(顺便说一下,我是通过 hMailServer 进行发送的,也许你知道如何解决这个问题),这些邮件既不在垃圾邮件文件夹中,也不在收件箱中。因此,用户离开页面后去查看邮件,发现没有任何邮件。他们必须使用另一个页面提供另一个电子邮件地址,这并不好。
那么,我该如何检查邮件是否成功发送呢?
更新:
我意识到没有办法做到这一点...
3个回答

6
关于最佳实践(例如设置SPF记录),Jeff Atwood在他的博客中有一篇很棒的文章,链接如下:http://www.codinghorror.com/blog/2010/04/so-youd-like-to-send-some-email-through-code.html 要检查邮件是否发送成功,只需在邮件中放置一张图片,并通过您的应用程序请求数据,从而记录用户已打开邮件。如果请求“/images/something.jpg?id={identify-the-user-and-message-here}”通过您的应用程序路由,则可以注册用户已查看邮件,然后返回图像或什么都不返回。

是的,谢谢你提供链接,图片这个想法听起来很不错!我会试一试。但是,图片阻止器会不会成为一个障碍呢? - Alex
2
@Alex:最终用户点击确认链接也是一种选择;没有任何真正的方法可以确保交付,除非在另一端进行某种验证。 - DanP
1
是的,图像拦截器会立即停止此操作,但是没有绝对可靠的方法来检查电子邮件是否已被接收。最好的做法是实施Jeff帖子中的内容,以使消息有最好的可能性,并为用户提供重新发送原始消息的简单方法。 - amarsuperstar
1
@DanP,你说得对。我刚意识到图片的方式也行不通,因为用户会离开页面,查看邮件,却什么都没有。同样的问题。 - Alex

4

看起来你想知道是否有一种实时方式来检查用户是否收到了消息。如果是这样,我建议你不要追求这条路。虽然大多数情况下电子邮件似乎是即时发送的,但在传递到收件人邮箱之前可能会被拦截任意长度的时间。


1
除了已发布的方法外,我还强烈推荐EmailVerify.NET组件,它可以在首次尝试发送之前对给定的电子邮件地址执行相当多层次的测试。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接