Постоянство пользовательских заголовков в потоке электронной почты

У меня это, наверное, странный вопрос, но я решил пойти дальше и спросить. Скажем, я отправляю электронное письмо, используя SMTP IMAP, через специальный клиент. Этот клиент добавляет несколько пользовательских заголовков к сообщению электронной почты перед отправкой. Получатель получает это электронное письмо и отвечает мне напрямую (и, возможно, несколько человек из CC тоже).

Мой вопрос таков: учитывая приведенный выше пример, будут ли эти X-заголовки сохраняться во всех новых сообщениях в потоке?

Одна вещь, о которой я могу подумать, это то, что клиент узнает об отправленном им исходном сообщении электронной почты. Все последующие ответы на это письмо будут иметь заголовок "Reply-To", значение которого равно "Message-Id" предыдущего письма. Я не понимаю, почему я не смог просканировать эти цепочки ответов, пока не добрался до исходного сообщения, отправленного клиентом, и таким образом получил оригинальные пользовательские заголовки.

Может быть, я слишком обдумываю это. Какие-либо предложения?:)

2 ответа

Решение

Ответ на сообщение не обязательно содержит что-либо из исходного сообщения. MUA, вероятно, предложит модифицированную (например, с префиксом "Re:") версию исходного объекта, и, очевидно, адреса также используются для соответствующих значений по умолчанию. Ни одно из другого содержимого сообщения не является частью ответа (если только отправитель намеренно не включает его, как при цитировании или пересылке). Любые X-заголовки, которые у вас есть в вашем сообщении, конечно же, не будут включены в ответ (если вы не контролируете этот MUA).

Тем не менее, ваш план отслеживания исходного сообщения, безусловно, выполним: см. Раздел 3.6.4 RFC 5322. Каждое сообщение должно (не обязательно) иметь заголовок идентификатора сообщения и, при необходимости, заголовки In-Reply-To и References.

Поле "Message-ID:" содержит один уникальный идентификатор сообщения. Поля "References:" и "In-Reply-To:" содержат один или несколько уникальных идентификаторов сообщений, которые могут быть разделены [пробелами].

In-Reply-To - это упоминание, чтобы идентифицировать сообщение (или сообщения), на которое (на) отвечают, в то время как References идентифицирует всю цепочку беседы. Заголовок References должен содержать все содержимое заголовка References сообщения, на которое вы отвечаете, поэтому вам нужно только последнее сообщение для идентификации всей цепочки.

Обратите внимание, что In-Reply-To и Reply-To - это не одно и то же (последний указывает адрес, на который отправитель желает получить ответы).

Предполагая, что у вас есть исходное сообщение, вы сможете использовать заголовок "Ссылки" любого ответа для идентификации исходного сообщения. Не каждый MUA будет правильно обрабатывать ссылки или In-Reply-To, но большинство будет.

Насколько я знаю, нет причин думать, что любой почтовый клиент будет распространять любые строки заголовка, которые он не понимает. Большинство сохранит тему (обычно добавляя "Re:", если необходимо) и получит строки "To:" и "Cc:" из заголовков предыдущего сообщения, но это все. Я полагаю, что некоторые (но не все) сгенерируют строку "In-Reply-To", но это далеко не так.

Ваша идея о том, чтобы клиент просканировал поток назад в поиске определенных заголовков, звучит так, как будто это выполнимо, но вам придется написать свой собственный почтовый клиент, если вы хотите эту функцию, и вы все равно будете заблокированы Дело в том, что не все почтовые клиенты каким-либо образом сохраняют потоки сообщений.

Другие вопросы по тегам