Есть ли способ обнаружить (используя заголовки RFC 2822), что электронное письмо является переадресованным письмом?
Обнаружение пересылки электронной почты
Ответ 1
Есть две вещи, которые обычно называются "пересылка".
Когда вы настраиваете автоматическую пересылку уровня аккаунта на другой адрес электронной почты, ваша почтовая система обычно вводит дополнительный заголовок, чтобы он мог обнаруживать и прерывать почтовые контуры. К сожалению, название этого заголовка никогда не было стандартизировано. Некоторые используют Delivered-To
, некоторые используют X-Loop
, некоторые используют X-Original-To
, некоторые используют проприетарный заголовок X для своего почтового программного обеспечения. Но нет единого поля заголовка, в котором присутствуют все случаи.
Когда вы вручную пересылаете сообщение, нажав кнопку "Переслать" в своей почтовой программе и введя адрес электронной почты получателя и некоторый описательный текст, создается новое сообщение с новым заголовком Message-ID
. Набор заголовков этого сообщения будет неотличим от обычного ответа - In-Reply-To
и References
устанавливаются точно так же. Единственное отличие состоит в том, что заголовок Subject
обычно начинается с "Fwd:
" или заканчивается на "(fwd)
" . ( "Обычно" , потому что некоторые клиенты форматируют его как "[Fwd: <original subject>]
" с квадратными скобками вокруг нового объекта, некоторые клиенты локализуют префикс Fwd:
на свой родной язык, а некоторые пользователи вручную редактируют Subject
перед ударом "отправить" ,.)
Итак, есть хорошие подсказки о том, что сообщение отправлено, но нет жестких и быстрых правил.
Ответ 2
Считывая spec, CTRL + F для "forward" дает следующие поля заголовка:
resent-date = "Resent-Date:" date-time CRLF
resent-from = "Resent-From:" mailbox-list CRLF
resent-sender = "Resent-Sender:" mailbox CRLF
resent-to = "Resent-To:" address-list CRLF
resent-cc = "Resent-Cc:" address-list CRLF
resent-bcc = "Resent-Bcc:" (address-list / [CFWS]) CRLF
resent-msg-id = "Resent-Message-ID:" msg-id CRLF
Я не уверен, использует ли это основное почтовое программное обеспечение.
ИЗМЕНИТЬ
Прочитайте спецификацию слишком быстро, есть также эта заметка:
Примечание. Повторное введение сообщения в транспортную систему и использование resent fields - это другая операция от "переадресации". "Пересылка" имеет два значения: одно чувство пересылки - это то, что почта программе чтения может быть сообщено пользователем направить копию сообщения другому лицу, сделав пересылаемое сообщение телом нового сообщение. Переадресованное сообщение в этом смысле, по-видимому, не имеет исходит от первоначального отправителя, но является совершенно новым форвардер сообщения. С другой стороны, пересылка также означает, когда почтовая транспортная программа получает сообщение и направляет его на другой пункт назначения для окончательной доставки. возмущаться поля заголовка не предназначены для использования с любым типом пересылка.
Нет никаких других уведомлений о "переадресации", поэтому нет полей заголовка, которые вы можете использовать для обнаружения переадресации, за исключением соглашения subject = "Fwd: <msg>"
.