2011-02-02 290 views
2

美好的一天!
對不起,這麼「清楚」的問題,讓我解釋一下。在我的「程序」中,我通過(例如)gmail SMTP服務器發送一些電子郵件。假設我發送的每封電子郵件在標題中都包含一些唯一ID(由我生成)。是否有機會,從gmail(例如,用python imaplib)檢索消息後,我會再次獲得該唯一ID(在標題中)?
謝謝發送郵件通過SMTP保證ID

回答

2

一般來說,MTA將保留您引入的任何消息標題。中繼MTA都required to do so

正如在6.4節討論的,中繼SMTP有沒有需要檢查或者在消息數據的報頭部分或身體 行爲,並不得 這樣做,除了增加自己的「收到:「標題字段(第4.4節) ,並可選擇嘗試檢測郵件系統中的循環(請參見 第6.3節)。當然,這種禁止也適用於這些頭域或文本的任何 修改(另請參閱第7.9節)。

一般來說,接收MTA還會添加與消息接收,垃圾郵件檢查,循環檢測等相關的更多標題。所以是的,無論您使用哪個目標SMTP服務器,GMail或其他方式,您都幾乎可以確保安全。

如果ID確實是唯一的,您可能需要考慮將它們用作your Message-ID header value的一部分。使用Message-ID用於此目的的好處是,當用戶回覆您的消息時,它們通常包括在其In-Reply-To和/或ReferencesMessage-ID值:

「消息ID:」字段提供了一個獨特的消息標識符 涉及特定消息的特定版本。消息標識符的唯一性由 生成的主機保證(見下文)。該消息標識符旨在是機器可讀的並且不一定對人有意義。消息 標識符恰好屬於特定消息的一個版本; 對郵件的後續修訂每收到一個新郵件 標識符。

創建對消息的回覆時使用「In-Reply-To:」和「References:」字段。它們保存原始消息的消息標識符和其他消息的消息標識符(例如,在回覆本身是應答的消息的情況下,爲 )。「In-Reply-To:」字段可用於標識新消息是回覆的消息(或 消息),而「參考:」字段可用於標識以下消息的「線索」: 談話。

2

我只是做了一些測試,看起來可能並且非常簡單。

我使用Mail.php擴展來實現這種情況(應該沒關係,但是)。我在發送消息之前添加了一個額外的標題(「Trevor」=>「我的測試」)。我在Gmail中收到郵件並做了一個「顯示原始郵件」,其中包含標題。

然後我拉下這條消息(也通過PHP),並且頭部包含我輸入的自定義行。