2010-06-30 52 views
3

我有一个.NET应用程序按计划基础轮询Exchange电子邮件邮箱中的新邮件。当在邮箱中找到新消息时,会进一步处理。我在邮箱收到自动回复邮件时遇到了处理问题[例如自动回复规则或外出邮件]。如何确定Exchange邮件项目是否为自动回复邮件?

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

回答

0

经过一段时间的这个问题的挣扎后,我决定只使用最简单的方法。

通过使用Exchange 2007可用的Exchange Web服务(exchange.asmx),我决定只检查每个邮件项目的主题行,看看它是否包含“离开办公室”,然后继续处理逻辑。我所处理的所有消息都是包含“离开办公室”主题行的自动回复消息。

我确定我会遇到没有“离开办公室”的自动回复消息的其他用例,我将来必须考虑这些消息。那时我会修改代码来检查主题行是否与可能的主题行数组匹配,或者继续在邮件项目上搜索一些指示自动回复邮件的附加属性。

我很确定额外的属性是邮件项目标题中的“Return-Path:”值,但我还没找到一个简单的方法来获取该属性。从我所知道的情况来看,如果“返回路径”的值为“<>”,那么这是一个自动回复消息,否则它会有一个有效的电子邮件地址。

0

自动回复信息构成标题的一部分,有时是主题和正文。这一切都取决于做出自动响应的服务器。

我个人使用第三方组件协助解析电子邮件。它被称为ListNanny

它有一个解析器引擎和一个定义文件,并可以帮助一些额外的NDR类型,如硬和软反弹,ChallengeVerification,DnsError电子邮件等。

如果我得到一个“未知”型背采用ListNanny,我则认为它是正确的电子邮件

希望这有助于

编辑:

的评论之后。我的其他建议是生成几种不同类型的自动回复消息。

从那里您可以手动查看电子邮件的标题,找到任何可能表明它是自动回复消息的条目(它不会出现在普通消息中),然后将自己的电子邮件解析器编写为包含电子邮件这些自动回复“签名”中的任何一个,然后将其标记为这样。

我只能告诉你,当你开始的时候,你很可能会有很多误报或者是正面错误的电子邮件,但是这会在一段时间后变好,并且在你处理了更多的电子邮件之后并改善你的签名。

对不起,我不能提供更多的帮助,为您提供代码示例或其他想法。

+0

我希望不要使用第三方组件来完成这项工作。购买第三方工具只是为了检查消息是否是自动回复似乎没有必要。 – 2010-07-02 12:38:30

+0

可以理解。 – Riaan 2010-07-02 13:57:10

2

查找报头的存在:

X-Auto-Response-Suppress 

即标志交换增加自动消息,以防止它们触发其它自动化消息。这听起来像你的确切用例。有specific flags that can be set,但在我的情况下,我只是没有发送回复,不管设置了哪些标志。

相关问题