#email #header #rfc5322
#Адрес электронной почты #заголовок #rfc5322
Вопрос:
Возможно, это странный вопрос, но я подумал, что пойду дальше и спрошу. Скажем, я отправляю электронное письмо, используя IMAP SMTP, через специальный клиент. Этот клиент добавляет несколько пользовательских заголовков к сообщению электронной почты перед его отправкой. Получатель получает это электронное письмо и отвечает мне напрямую (и, возможно, CC также несколько человек).
Мой вопрос заключается в следующем: учитывая приведенный выше пример, будут ли эти X-заголовки сохраняться во всех новых сообщениях в потоке?
Одна вещь, о которой я могу думать, это то, что клиент будет знать об исходном сообщении электронной почты, которое он отправил. Все последующие ответы на это электронное письмо будут иметь заголовок «Reply-To», значение которого равно «Message-Id» предыдущего электронного письма. Я не понимаю, почему я не мог сканировать эти потоки ответов, пока не доберусь до исходного сообщения, отправленного клиентом, тем самым получая исходные пользовательские заголовки.
Возможно, я переоцениваю это. Есть предложения? 🙂
Комментарии:
1. Большинство почтовых клиентов сегодня используют поля заголовка In-reply-to и References для создания диалогов (потоков). Это позволяет им делать именно то, что вы предлагаете, перемещаться по списку до получения исходного сообщения.
Ответ №1:
Ответ на сообщение не обязательно содержит что-либо из исходного сообщения. MUA, вероятно, предложит измененную (например, дополненную «Re:») версию исходной темы, и, очевидно, адреса также используются для соответствующих значений по умолчанию. Никакое другое содержимое сообщения не является частью ответа (если только отправитель намеренно не включает его, как при цитировании или пересылке). Любые X-заголовки, которые есть в вашем сообщении, безусловно, не будут включены в ответ (если у вас нет контроля над этим MUA).
Однако ваш план отслеживания исходного сообщения, безусловно, выполним: см. Раздел 3.6.4 RFC 5322. Каждое сообщение должно (не обязательно) иметь заголовок Message-ID и должно иметь заголовки In-Reply-To и References, когда это необходимо.
Поле «Message-ID:» содержит единственный уникальный идентификатор сообщения. Поля «Ссылки:» и «В ответе на:» содержат один или несколько уникальных идентификаторов сообщения, необязательно разделенных [пробелом].
In-Reply-To — это упоминание для идентификации сообщения (или сообщений), на которое (которые) отвечают, в то время как ссылки идентифицируют весь поток разговора. Заголовок References предназначен для того, чтобы содержать все содержимое заголовка References сообщения, на которое дается ответ, поэтому вам нужно только последнее сообщение, чтобы идентифицировать весь поток.
Обратите внимание, что In-Reply-To и Reply-To — это не одно и то же (последнее указывает адрес, на который отправитель желает отправлять ответы).
Предполагая, что у вас есть исходное сообщение, вы должны иметь возможность использовать заголовок References любого ответа для идентификации исходного сообщения. Не каждый MUA будет корректно обрабатывать ссылки или ответы в ответ, но большинство будет.
Ответ №2:
Насколько я знаю, нет причин думать, что какой-либо почтовый клиент будет распространять какие-либо строки заголовка, которые он не понимает. Большинство сохранит тему (обычно добавляя «Re: «, если необходимо) и выведет свои строки «Кому: » и «Cc: » из заголовков предыдущего сообщения, но это все. Я полагаю, что некоторые (но не все) будут генерировать строку «В ответе», но это все, что нужно.
Ваша идея о том, чтобы клиент просматривал поток в поисках определенных заголовков, звучит так, как будто это может быть выполнимо, но вам придется написать свой собственный почтовый клиент, если вы хотите эту функцию, и вы все равно будете заблокированы тем фактом, что не все почтовые клиенты каким-либо образом сохраняют потоковую передачу сообщений.