2014-07-10 61 views
2

在罕見的情況下我的電子郵件反彈與消息時,如何避免「沒有消息ID拒絕消息」 550-RFC2822說,所有的郵件應該有一個MESSAGE- ID標頭。 550大多數沒有它的郵件都是垃圾郵件,因此您的郵件已被拒絕。使用印SMTP

我試圖設定使用Message-ID頭:

IdMessage1.Headers.Values['Message-ID'] := id; 

在這種情況下id爲在MYDOMAIN格式XXXXX的字符串。然而,這不是如何設置一個消息標識頭,或者它被我的smtp服務器(由我的isp託管)剝離。我注意到,從Outlook發送的電子郵件確實得到了一個消息ID,並且它們沒有被剝離。有沒有人有任何關於如何提供message-id頭部的建議,以免它被剝離?是否還有其他標題,我應該包括?我還通過電子郵件發送了我的isp,以防止它在他們的最終設置,但Outlook必須以某種方式做到這一點。

回答

3

提供自定義標題時發送節省電子郵件,您必須使用TIdMessage.ExtraHeaders屬性。使用TIdMessage.Headers屬性時收到正在加載電子郵件。

TIdMessage有一個MsgId屬性,您可以改爲使用。但是,發送電子郵件時,MsgId屬性值將被忽略,因此您必須求助於TIdMessage.ExtraHeaders發送自定義Message-ID標頭。值不會被節省電子郵件,但。


編輯:

對於這樣的隨訪 - TIdMessage現在已經在如何處理 「消息ID」 和 「In-回覆」 標題的邏輯變化更新:

http://indyproject.org/sockets/blogs/changelog/20160912.aspx

簡而言之,該TIdMessage.MsgId屬性現在產生一個「郵件ID」報頭創建一個新的電子郵件時(你不需要使用TIdMessage.ExtraHeaders屬性了,儘管如果需要仍然可以),並且當TIdMessage.InReplyTo屬性爲空時,不再使用當前的「Message-ID」標題自動生成「In-Reply-To」標題。

+0

雷米,感謝您的信息。我現在使用額外的頭文件來設置message-id,它似乎可以工作,但是我也收到了In-Reply-To:設置爲相同的值。有什麼辦法可以避免這種情況,或者有意義嗎? – MarkF

+1

是的,我的意思是'MsgId',抱歉。我已經更新了我的答案。 –

+3

至於'In-Reply-To'頭,如果'TIdMessage.InReplyTo'屬性爲空,則它被設置爲與'Message-ID'頭相同的值。這是硬編碼的行爲,這是無法避免的。 「TIdMessage」表達了這樣一種信念,即客戶永遠無法生成他們自己的消息ID,這應該是服務器的責任。這種信念多年來一直受到質疑,但「TIdMessage」尚未相應更新。 –