2013-06-12 43 views
2

由於我升級到Indy10,我注意到收到的TIdMessage(s)上的ReplyTo字段(Msg.ReplyTo[0].Address)似乎正在從回程路徑標頭中的地址填入,如果沒有對標題的明確回覆。我的期望是Msg.ReplyTo.Count應該是零,如果沒有答覆頭。這裏發生了什麼?這是一個錯誤?設計更改?還有別的嗎?如何判斷郵件是否有單獨的回覆地址,或者我是否應回覆「發件人」字段中的地址?讓它回覆到返回地址似乎給了我自己的電子郵件的屠殺版本,不是很有用。回覆在Indy 10中的地址?

我現有的邏輯(即不工作的消息,沒有回覆地址)看起來是這樣的:

if Msg.ReplyTo.Count>0 then 
    FReplyTo := Msg.ReplyTo[0].Address 
else 
    FReplyTo := Msg.From.Address; 
+0

你是什麼意思?「讓它回覆返回地址似乎給我自己的電子郵件屠殺版本」? –

+0

標題看起來像這樣...(這本身並不意外)......但不是我期望看到的作爲回覆地址的電子郵件地址不是來自我。返回路徑:<[email protected]> –

回答

4

當解析電子郵件,TIdMessage.ReplyTo着眼於Reply-To頭第一,如果空/缺少,然後看看Return-Path標題。如果您想知道Reply-To本身是否爲空白/缺失,您將不得不手動查看TIdMessage.Headers.Values['Reply-To']

更多關於它的思考,並做一些研究Reply-ToReturn-Path是如何工作的,它可能是有道理的,從TIdMessage.ReplyTo屬性中刪除Return-Path,所以我做了,現在改變。

+0

謝謝你,更新後的Indy代碼能夠更好地回覆發件人:) –