2012-12-03 45 views
1

我們正在將幾個應用程序整合到我正在編寫的一個新應用程序中。每個應用程序都有一個(或多個)電子郵件地址來處理電子郵件。我們希望將每個原始電子郵件地址轉發給新的集中地址,然後根據最初發送的地址對電子郵件進行不同的處理。如何通過IMAP可靠地確定原始電子郵件收件人是誰?

我們連接的服務器是Exchange 2003,我使用IMAP(AE.Net.Email)來獲取電子郵件。

看來我可以通過標題並查找收到的標題,但我不確定這是否可靠。我知道一些郵件系統專門爲此添加了一個頭文件,但它看起來並不像我們的那樣。

那麼有什麼我可以通過IMAP檢查,我只是沒有看到?我們可以在Exchange中做些什麼來確保標題被添加?或者將電子郵件發送到不同的文件夾?有沒有辦法做一個類似於GMail的[email protected]

+0

爲什麼電子郵件會包含有關用於傳輸傳輸協議的任何信息? – Oded

+0

誰問關於運輸協議?我的意思是,如果您發送電子郵件到[email protected],它會自動轉發到[email protected]我可以告訴它最初發送給凱利。這就是說,它看起來像交換支持+標誌的東西... – CodeRedick

+0

我現在看到了混亂 - 我明白標題意思是你需要找出消息是否最初是通過IMAP發送的。 – Oded

回答

2

當電子郵件被重定向,別名,轉發或在郵箱之間移動時,您無法分辨。在SMTP世界中,將電子郵件轉發到其目的地的每個操作幾乎等同於對SMTP信封收件人地址的修改或重寫。這些操作可以是從電子郵件別名到通過郵件列表交付給用戶配置的轉發規則的任何內容。有些MTA的設計甚至是非常明確的:例如,Sendmail配置文件最重要的部分不過是一組基於模式匹配和替換的規則,它們指定了電子郵件的信封接收者如何迭代地重寫文本。

這就是說,當電子郵件通過系統時,可以在標題中留下痕跡,這些標題提供了信封收件人以前在此過程中所用信息​​的線索。但是這裏沒有標準和保證。

MTA通常會在Received標題中提供一些信息,這些信息可以派上用場,如您所知,但並非總是以可預測的格式。一些本地交付代理(郵件鏈中的最後一步,將電子郵件發送到實際郵箱中)在將郵件放入郵箱之前在郵件中附加Delivered-To這些標頭,但這取決於交付代理。郵件列表添加如List-Id這樣的標題,該標題表示電子郵件在向個別訂戶重新發送消息之前已經遞送到哪個郵件列表。

沒有一個地方可以看。你可以做的最好的事情是找到在你的特定場景中總是相同的東西,並且使用它,或者如果沒有任何東西,就安排你使用的任何腳本/功能來轉發消息以添加它自己的麪包屑道在標題中。

+1

當亞馬遜SES參與時,我也看到了「X-Delivered-To」,而在處理Google Apps組的決議時,也看到了「X-BeenThere」。啊,不是電子郵件好玩嗎? – Charles

相關問題