如何确定Exchange邮件项目是否为自动回复消息?

4

我有一个.NET应用程序,定期轮询 Exchange 邮件邮箱以获取新邮件。当在邮箱中发现新邮件时,将进行进一步处理。然而,当邮箱收到自动回复消息(例如自动回复规则或 Out of Office 消息)时,处理会遇到问题。

我需要一个 C# 解决方案来确定 Exchange 邮件项是否为自动回复消息。邮件项中是否有属性指示该消息是自动响应消息?

5个回答

4

查找标题是否存在:

X-Auto-Response-Suppress

这是Exchange添加到自动消息中的标志,以防止它们触发其他自动消息。这听起来就像你的确切用例。有可以设置的特定标志,但在我的情况下,无论设置了哪些标志,我都没有发送回复。

0

是的,有一个属性,但它被称为InternetMessageHeaders,而且不仅仅是一个,因为我们有多个电子邮件交换服务器,它们都遵循自己的标准。

以下是可以检查的标题列表:

Auto-Submitted: auto-replied
X-Auto-Response-Suppress:all
Precedence: auto_reply
X-Autoreply: yes
Auto-Submitted: auto-generated

0

自动响应信息是邮件头的一部分,有时也包括主题和正文。这完全取决于发送自动响应的服务器。

我个人使用第三方组件ListNanny来协助解析电子邮件。

它有一个解析引擎和一个定义文件,并且可以协助处理其他类型的NDR,例如硬反弹、软反弹、挑战验证、DNS错误电子邮件等等。

如果使用ListNanny返回一个“未知”类型,那么我就假设它是一个正确的电子邮件。

希望这能帮到你。

编辑:

在评论后,我的另一个建议是生成几种不同类型的自动响应消息。

然后您手动查看电子邮件的标头,找到任何可能表明它是自动响应消息的条目(这些条目不会出现在普通消息中),然后编写自己的电子邮件解析器,以确定电子邮件是否包含任何这些自动响应的“签名”,然后将其标记为此类电子邮件。

我只能告诉你当你开始时,你很可能会有很多错判的电子邮件,但是一段时间后这种情况会变得更好,在处理更多电子邮件并完善您的签名后就会有所改善。
抱歉我无法为您提供代码示例或其他想法。

我希望在这个项目中不使用第三方组件。购买第三方工具仅仅为了检查一条消息是否是自动回复似乎有些不必要。 - Robert Williams

0

在苦苦挣扎了一段时间后,我决定采用最简单的方法。

通过使用可用于Exchange 2007的Exchange Web服务(exchange.asmx),我决定仅检查每个邮件项的主题行是否包含“Out of Office”,然后再继续处理逻辑。我处理的所有消息都是包含“Out of Office”主题行的自动回复消息。

我相信将来还会遇到其他不包含“Out of Office”的自动回复消息的用例,我将不得不修改代码以检查主题行是否与可能的主题行数组匹配,或者继续搜索邮件项上的其他属性以指示自动回复消息。

我相当确定附加属性是邮件项头中的“Return-Path:”值,但我还没有找到获取该属性的简单方法。据我所知,如果“Return-Path”具有“<>”值,则它是自动回复消息,否则它将具有有效的电子邮件地址。


0

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