如何处理退回的电子邮件?

问题描述:

我的应用程序的用户可以发送电子邮件给一组人。部分电子邮件可能无效。 我需要让用户知道哪些电子邮件被反弹。如何处理退回的电子邮件?

这可能吗?如果是的话,任何指针都会有帮助。

我使用.NET,C#发送电子邮件。我不使用任何第三方工具发送邮件。

谢谢

+3

没有可靠的方法来确定电子邮件是否已发送。 – 2010-12-11 22:19:11

我已经在几年前使用http://mailsystem.codeplex.com/完成了这项工作。它现在是开源的,但它当时花了我钱。

您将收到一条指示退回的消息,并且代码中有属性可以为您提供原始发件人,因此您可以正确提交。

+0

当然,我没有提到,我已经将某些电子邮件转发给我正在监视的smtp文件夹。 – phillip 2010-12-11 22:27:50

+0

它可以处理,如果有多个发件人和任何发件人可以使用相同的电子邮件 – kheya 2010-12-11 22:36:09

+0

当然可以。我开发的应用程序每天处理超过50,000封邮件。邮件的格式也与附件不同。那个代码(你可以使用)是邮件组件。它非常强大。 – phillip 2010-12-11 22:46:34

“反弹”通常会返回给电子邮件的发件人,而不是您的应用程序。它并不是真正按照你的建议被应用程序处理。用户应该收到来自所讨论的电子邮件服务器的反弹通知(假设一切顺利,因为OMG Ponies说实在没有可靠的方法)。

为了使您的应用程序成为反弹的接收者并以任何有意义的方式对其作出响应,您需要完成大量工作。您的应用程序基本上必须是用于发送电子邮件的用户帐户的邮件服务器。它必须在端口25上侦听并解析传入的消息进行反弹。

这不是一件小事。只是“作为一个邮件服务器”在理论上工作得很好,除了世界上大多数其他邮件服务器都会忽略你,除非你是一个合适的MX记录和所有的域名。另外,如果您在端口25上收听传入的内容,则会产生大量噪音。

最好让用户首先通过代表他们发送邮件来正确地收到反弹。

+0

我需要简单快捷的解决方案。这是最重要的要求。目前,我将来自电子邮件地址设置为'[email protected]'。因此,如果我将发件人的电子邮件设置为发件人地址,那么退回的电子邮件将转到用户而不是我的应用程序,对不对? – kheya 2010-12-11 22:32:39

+2

您不必使用端口25.您可以让邮件服务器转发到您的文件夹。您不必是终点,也不会修改mx记录。他们几乎都有这个功能。 – phillip 2010-12-11 22:39:08

+0

@phillip:这就够了,我没有想到这一点。 @Projapati:这可能是你最好的选择。让公司的邮件服务器将'[email protected]'的邮件存储到文件夹中。然后你的应用程序可以使用'FileSystemWatcher'来监视这个文件夹并解析传入的消息。根据他们的内容,您必须将其与适当的用户进行匹配,并使用您的应用程序可能已经拥有的任何通知系统来让该用户知道。 – David 2010-12-11 23:05:04

您可以查看MailBounceDetector存储库。

希望这会有所帮助。