2012-10-01 139 views
0

我從德爾福使用了Indy的IMAP帳戶讀取電子郵件標題2007額外的頭信息

味精(TidMessage)日期屬性給出了電子郵件的發送日期和時間(從客戶端) ,我試圖通過檢查ExtraHeaders屬性來獲取服務器收到電子郵件的日期和時間,可以這樣做嗎?

到目前爲止,我已經試過Msg.ExtraHeaders.Values [「接收」]和Msg.ExtraHeaders.Text,兩者返回一個空字符串。

我對此有何看法?

回答

1

沒有用於指示日期/,一個電子郵件由服務器接收時間的目的報頭具體。如果服務器想要爲此目的創建一個自定義的"X-..."標題,那麼這是由它自己決定的。 Indy沒有辦法強制服務器這樣做。

即便如此,所有電子郵件都有一系列"Received"標題,以提供電子郵件通過哪些服務器到達目的地的歷史記錄。您可以從TIdMessage.Headers中提取數據,例如Headers.Extract('Received')(請記住,可以有多個"Received"標頭),然後根據需要手動解析它。 TIdMessage.ExtraHeaders收到郵件時沒有意義,只有在發送郵件時纔有意義。

+0

感謝您的迴應,我認爲這不會像讀1財產一樣簡單。我會嘗試RawHeaders,看看我是否可以提取並解析它們以找到最終的電子郵件服務器。自定義X -....標題是否有標準名稱,或者電子郵件服務器是否選擇了要命名的名稱(X-Received,X-FinalHop等)? – SteB

+0

'「X-」是任何用戶自定義標題的標準前綴,例如:'「X-custom-name」'。我提到它只是一種罕見的可能性。實際上,任何服務器都會爲您正在查找的數據定義自定義標頭,這是值得懷疑的。 –

+0

我在TIdMessage類的任何地方都看不到RawHeaders,只有Headers,ExtraHeaders和LastGeneratedHeaders? – SteB