2013-06-12 2 views
2

Поскольку я обновился до Indy10, я заметил, что поле ReplyTo (Msg.ReplyTo[0].Address) на полученных TIdMessage (s), кажется, заполняется адресом из заголовка Return-path, если явного ответа на заголовок нет , Мое ожидание будет состоять в том, что Msg.ReplyTo.Count должен быть равен нулю, если нет заголовка ответа. Что тут происходит? Это ошибка? Изменение дизайна? Что-то другое? Как узнать, имеет ли сообщение отдельный ответ на адрес, или я должен отвечать на адрес из поля «from»? Если он ответит на обратный адрес, кажется, что он выпустил мою собственную электронную почту, не очень полезную.Ответ на адрес в Indy 10?

Моя существующая логика (которая не работает для сообщений без ответа на адрес) выглядит следующим образом:

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

Что вы подразумеваете под словом «Имея ответ на обратный адрес, кажется, дает удачную версию моего собственного письма»? –

+0

заголовок выглядит примерно так ... (который сам по себе не является неожиданным) ... но не то, что я ожидаю увидеть в качестве ответа на адрес для электронной почты. Мне не от меня. Return-path: <[email protected]> –

ответ

4

При разборе электронной почты, TIdMessage.ReplyTo смотрит на заголовок Reply-To первым, и если пустой/отсутствует, то смотрит на заголовок Return-Path. Если вы хотите узнать, пусто ли/Reply-To или нет, вам придется посмотреть на TIdMessage.Headers.Values['Reply-To'] вручную.

Думая об этом больше, и делать некоторые исследования о том, как Reply-To и Return-Path на самом деле работает, он, вероятно, имеет смысл удалить Return-Path из TIdMessage.ReplyTo собственности, так что я сделал, что сейчас ситуация изменилась.

+0

Благодарим вас, обновленный код Indy работает намного лучше, позволяя на самом деле ответить отправителю :) –

Смежные вопросы