отправить сообщение через SMTP с идентификатором гарантии

добрый день!
извините за столь "ясный" вопрос, позвольте мне объяснить. В моей «программе» я отправляю несколько писем через (например) SMTP-сервер gmail. Предположим, что каждое письмо, которое я отправил, содержит в заголовке какой-то уникальный идентификатор (сгенерированный мной). Есть ли шанс, что после получения этих сообщений из gmail (например, с помощью python imaplib) я снова получу этот уникальный идентификатор (в заголовке)?
спасибо


person Anton Koval'    schedule 02.02.2011    source источник


Ответы (2)


Как правило, MTA сохраняют любые введенные вами заголовки сообщений. Для этого требуется ретрансляция:

Как обсуждалось в разделе 6.4, SMTP-ретранслятору не нужно проверять или воздействовать на раздел заголовка или тело данных сообщения, и НЕ ДОЛЖЕН делать этого, за исключением добавления собственного поля заголовка «Received:» (раздел 4.4) и, необязательно, попытаться обнаружить зацикливание в почтовой системе (см. Раздел 6.3). Конечно, этот запрет также распространяется на любые модификации этих полей заголовка или текста (см. также Раздел 7.9).

Как правило, принимающий MTA также просто добавляет дополнительные заголовки, связанные с получением сообщения, проверкой спама, обнаружением циклов и т.п. Так что да, вы почти наверняка будете в безопасности, независимо от того, какой целевой SMTP-сервер вы используете, GMail или какой-либо другой.

Если идентификаторы действительно уникальны, вы можете использовать их как часть вашего Message-ID значение заголовка. Преимущество использования Message-ID для этой цели заключается в том, что когда пользователи отвечают на ваше сообщение, они обычно включают это значение Message-ID в свой заголовок In-Reply-To и/или References:

Поле «Message-ID:» содержит уникальный идентификатор сообщения, относящийся к конкретной версии конкретного сообщения. Уникальность идентификатора сообщения гарантируется генерирующим его хостом (см. ниже). Этот идентификатор сообщения предназначен для машинного чтения и не обязательно имеет смысл для человека. Идентификатор сообщения относится ровно к одной версии конкретного сообщения; каждая последующая редакция сообщения получает новые идентификаторы сообщения.

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

person dkarp    schedule 03.02.2011

Я только что провел небольшое тестирование, и это выглядит возможным и на самом деле довольно простым.

Я использовал расширение Mail.php, чтобы это произошло (хотя это не имеет значения). Я добавил дополнительный заголовок перед отправкой сообщения («Тревор» => «Мой тест»). Я получил сообщение в Gmail и сделал «Показать оригинал», и оно содержит заголовок.

Затем я вытащил это сообщение (также через PHP), и заголовок содержит пользовательскую строку, которую я ввел.

person Trevor    schedule 02.02.2011