Описание заголовка почтового сообщения
В общем случае почтовое сообщение состоит из двух частей: заголовок сообщения и тело сообщения. В заголовке сообщения находится вся информация касающееся сообщения, например: время создания сообщения, получателей, отправителей, заголовка и др.
Заголовок состоит из полей имеющих следующую структуру: в начале строки находится имя поля, затем идет тело поля, отделенное от имени символом ":". Поле обязательно должно заканчиваться символами перевода каретки и новой строки (13h и 10h, дальше CR и LF). Имя поля должно состоять из символов US-ASCII входящих в диапазон значений между 33 и 126, за исключением двоеточия. Тело поля может содержать все символы таблицы US-ASCII за исключением CR и LF (кроме специальных полей).
Ниже перечислены поля, которые могут присутствовать в заголовке сообщения и их описание.
- Date - Дата и время создания сообщения, когда сообщение готово и может быть отослано.
- From - Разделенные запятой почтовые адреса авторов сообщения. В случае, если адресов несколько, должно быть поле Sender.
- Sender - Почтовый адрес отправителя. Если поле From содержит один адрес, то поле Sender может отсутствовать. Если значения полей Sender и From совпадают, то поле Sender должно отсутствовать.
- Reply-to - Почтовый адрес, на который автор сообщения желал бы получить ответ.
- To - Почтовые адреса основных адресатов. Если адресов несколько - они разделяются запятыми.
- Cc - Копии. Почтовые адреса других адресатов. Если адресов несколько - они разделяются запятыми.
- Bcc - Слепые копии. Почтовые адреса адресатов, которые будут не видны другими адресатами, получающим это сообщение. Если адресов несколько - они разделяются запятыми.
- Message-id - Поле предоставляет уникальный идентификатор сообщения. Идентификатор уникален для всего мира.
- In-Reply-To - Содержит идентификатор оригинального сообщения, на которое делается ответ.
- References - Содержит идентификатор оригинального сообщения, на которое делается ответ.
- Subject - Тема сообщения.
- Comments - Содержит дополнительные комментарии к сообщению.
- Keywords - Ключевые слова и важные слова, которые могут быть полезны адресату.
- Resent-Date, Resent-From, Resent-Sender, Resent-To, Resent-Cc, Resent-Bcc, Resent-Message-Id - Используются при пересылке сообщения. Эти поля содержат информацию, измененную тем, кто производил пересылку.
- Return-Path - Почтовый адрес, проставляемый SMTP-сервером на стадии финальной отсылки. Чаще всего используется для доставки отчета с описанием возникшей ошибки.
- Received - Используется для идентификации SMTP-серверов, которые принимали участие в отправке сообщения от отправителя к получателю. Каждый SMTP-сервер добавляет свое поле.
- Encrypted - Указывает на то, что сообщение было подвергнуто шифрованию.
- MIME-Version - Содержит версию MIME. Дополнительную информацию можно получить из документов RFC 2045, RFC 2046, RFC 2047, RFC 2048, RFC 2049.
- Content-Type - Значением этого поля является наиболее полная информация о содержимом сообщения, которая позволяет почтовому клиенту выбрать соответствующий механизм обработки.
- Content-Transfer-Encoding - Указывается способ помещения двоичных данных в тело сообщения.
- Поля начинающиеся с X- - Дополнительное незарегистрированное поле. Разные почтовые клиенты могут использовать разные незарегистрированные поля для собственных нужд.
Довольно часто в заголовке сообщения можно встретить строку вида:
=?<кодировка>?<способ_кодирования>?<тело>?=
Эта строка определяет кодировку, способ кодирования и закодированный оригинальный текст, состоящий только из видимых ASCII символов. Почтовый клиент, если видит, что строка помещаемая в заголовок состоит из не ASCII символов, предварительно конвертирует в описанный выше формат и вставляет в заголовок. Примером может служить тема сообщения.
Пример получения заголовка из сообщения:
Копировать в буфер обмена Почта = Новый ИнтернетПочта;
Профиль = Новый ИнтернетПочтовыйПрофиль;
Профиль.АдресСервераPOP3 = "pop3.foobar.org";
Профиль.Пользователь = "user";
Профиль.Пароль = "password";
Почта.Подключиться(Профиль);
Масс = Почта.Выбрать(Ложь);
Для Каждого Письмо из Масс Цикл
Сообщить(Письмо.Заголовок);
КонецЦикла;
Более подробно о структуре заголовка сообщения, а также о предназначении полей можно узнать из документа RFC 2822.