2011-09-29 102 views
13

我這可能是一個奇怪的問題,但我想我會繼續問。說,我發送電子郵件,使用 IMAP SMTP,通過一個特殊的客戶端。此客戶端在發送郵件消息之前,會向郵件消息中添加一些自定義標頭。收件人收到此郵件並直接回復我(也可能是CC的幾個人)。電子郵件線程中自定義標題的持久性

我的問題是這樣的:鑑於上面的例子,這些X-header會在線程中的所有新消息中持續存在嗎?

我能想到的一件事是客戶端會知道它發送的原始電子郵件。隨後對此電子郵件的所有回覆都會有一個「Reply-To」標頭,其值等於上一封電子郵件的「Message-Id」。我不明白爲什麼我無法抓取這些線索的回覆,直到我得到由客戶端發送的原始消息,從而導出原始自定義標頭。

也許我在想這個。有什麼建議麼? :)

+0

今天的大多數電子郵件客戶端都使用In-reply-to和References頭字段來創建對話(線程)。這使他們能夠按照你的建議行事,遍歷列表直到到達原始消息。 –

回答

20

消息回覆不一定包含原始消息的任何內容。 MUA可能會建議對原始主題進行修改(例如,預先添加「Re:」)版本,並且地址顯然也會用於適當的默認設置。消息的其他內容都不構成答覆的一部分(除非發件人故意將其包含在內,如引用或轉發)。您在郵件中的任何X頭信息肯定不會包含在回覆中(除非您擁有MUA的控制權)。

但是,您追蹤原始消息的計劃當然是可行的:請參閱RFC 5322的第3.6.4節。每條消息應該(不一定)都有一個消息ID頭,並且在適當的時候應該有In-Reply-To和References頭。

「消息ID:」字段包含一個唯一的消息標識符。 「引用:」和「回覆到:」字段每個都包含一個或多個唯一的消息標識符,可以用[空格]分隔開。

In-Reply-To提及識別被回覆的消息(或消息),而引用標識整個對話線程。引用標題是爲了包含被回覆的消息的引用標題的全部內容,所以你只需要最後一條消息來標識整個線程。

注意在-回覆至回覆到是不一樣的東西(後者規定了發送方希望答覆發送到地址)。

假設您有原始郵件,那麼您應該能夠使用任何回覆的引用標題來標識原始郵件。並非每個MUA都會正確處理參考或回覆內容,但大多數人會這樣做。

4

據我所知,沒有理由認爲任何電子郵件客戶端會傳播任何它不明白的標題行。大多數人會保留主題(通常在必要時添加「Re:」),並從前一封郵件的標題中派生出他們的「To:」和「Cc:」行,但就是這樣。我想有些(但不是全部)會生成一個「In-Reply-To」行,但這就是它的意義。

你有一個客戶端通過線程爬回來尋找特定頭文件的想法聽起來像它可能是可行的,但是如果你想要這個功能,你必須編寫自己的電子郵件客戶端,而且你仍然被所有電子郵件客戶端以任何方式保留消息線程的事實阻止。

相關問題