我有一个.NET应用程序,可以按计划轮询Exchange邮箱以获取新邮件。在电子邮件邮箱中找到新邮件时,会进一步处理。我在邮箱中收到自动回复邮件时遇到了处理问题[例如自动回复规则或外出留言]。
我需要一个C#解决方案来确定Exchange邮件项是否是自动回复邮件。邮件项上是否有一个属性,指示邮件是否为自动回复邮件?
答案 0 :(得分:2)
查找标题的存在:
X-Auto-Response-Suppress
这是Exchange添加到自动邮件的标志,以防止它们触发其他自动邮件。这听起来像你的确切用例。有specific flags that can be set,但就我而言,无论设置了哪个标志,我都没有发送回复。
答案 1 :(得分:0)
自动回复信息构成标题的一部分,有时是主题和正文。这完全取决于执行自动响应的服务器。
我个人使用第三方组件来协助解析电子邮件。它被称为ListNanny。
它有一个解析器引擎和一个定义文件,可以协助一些额外的NDR类型,例如Hard和Soft Bounces,ChallengeVerification,DnsError电子邮件等。
如果我使用ListNanny返回“未知”类型,我会认为它是一封正确的电子邮件
希望这有帮助
编辑:
评论后。我的另一个建议是生成几种不同类型的自动回复消息。
从那里你手动查看电子邮件的标题,找到任何可能表明它是自动回复邮件的条目(在正常邮件中不显示),然后编写自己的电子邮件解析器,如果电子邮件包含任何邮件那些自动回复'签名',然后将其标记为。
我只能告诉你,当你开始时,你很可能会有很多误报或肯定的假电子邮件,但这会在一段时间后变得更好,并且在你处理了更多的电子邮件之后完善你的签名。
很抱歉,我无法为您提供代码示例或其他想法。
答案 2 :(得分:0)
在努力解决这个问题一段时间后,我决定尽可能使用最简单的方法。
通过使用Exchange 2007可用的Exchange Web服务(exchange.asmx),我决定只检查每个邮件项的主题行,看它是否包含“Out of Office”,然后再继续处理逻辑。我正在处理的所有消息都是包含“外出”主题行的自动回复消息。
我确信我会遇到自动回复邮件的其他用例,这些邮件没有“不在办公室”,以后我将不得不考虑。那时我将修改代码以针对可能的主题行数组检查主题行,或者继续在邮件项目上搜索指示自动回复消息的一些附加属性。
我很确定其他属性是邮件项目标题中的“Return-Path:”值,但我还没有找到一种简单的方法来获取该属性。据我所知,如果“Return-Path”有一个“<>”值,它是一个自动回复消息,否则它将具有有效的电子邮件地址。
答案 3 :(得分:0)
似乎,如果您使用的是Exchange EWS托管API,则可以检查Exchange“项目”的ItemClass。这表明它是任务,事件,文档,电子邮件等。
它还指示它是OofTemplate还是NDR(反弹)。这里列出了一些类:
https://docs.microsoft.com/en-us/office/vba/outlook/Concepts/Forms/item-types-and-message-classes
所以基本的想法是检查...
(declare-datatypes () ((Flower R Y B)))
(declare-const garden (Array Int Flower))
(assert (forall ((a Int) (b Int) (c Int))
(and (or (= (select garden a) R)
(= (select garden b) R)
(= (select garden c) R))
(or (= (select garden a) Y)
(= (select garden b) Y)
(= (select garden c) Y)))))
(check-sat)
...那不是电子邮件和/或是自动回复