2010-06-30 53 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,但在我的情況下,我只是沒有發送回覆,不管設置了哪些標誌。

相關問題