Ответить на адрес в Indy 10?
Так как я обновил до Indy10, я заметил, что поле ReplyTo (Msg.ReplyTo[0].Address
) на полученных TIdMessage(s), кажется, заполняется адресом из заголовка Return-path, если нет явного ответа на заголовок. Я ожидаю, что Msg.ReplyTo.Count
должен быть равен нулю, если заголовка ответа нет. Что тут происходит? Это ошибка? Изменение дизайна? Что-то другое? Как я могу узнать, имеет ли сообщение отдельный адрес для ответа, или я должен отвечать на адрес из поля "от"? Получение ответа на обратный адрес, похоже, дает неверную версию моего собственного электронного письма, что не очень полезно.
Моя существующая логика (которая не работает для сообщений без адреса для ответа) выглядит следующим образом:
if Msg.ReplyTo.Count>0 then
FReplyTo := Msg.ReplyTo[0].Address
else
FReplyTo := Msg.From.Address;
1 ответ
При разборе электронной почты, TIdMessage.ReplyTo
смотрит на Reply-To
заголовок сначала, и если пустой / отсутствует, то смотрит на Return-Path
заголовок. Если вы хотите знать, Reply-To
само по себе пусто / отсутствует или нет, вам придется посмотреть на TIdMessage.Headers.Values['Reply-To']
вручную.
Думать об этом больше, и делать некоторые исследования о том, как Reply-To
а также Return-Path
на самом деле работает, наверное, имеет смысл убрать Return-Path
от TIdMessage.ReplyTo
собственности, поэтому я сделал это изменение сейчас.