email/Messages

Коллекция email-писем, привязанных к email-аккаунтам и каталогам (для входящих писем). Коллекция создается и используется микросервисом 'email'. Имеет тип history, партиционируется и адресуется с использованием дат.

Сущности для полученных писем создаются автоматически во время синхронизации IMAP-каталога с IMAP-сервером. Сущности отправленных писем создаются через API или другими сервисами системы.

Письма имеют состояния, влияющие на процесс обслуживания. Так, для отправки письма состояние 'messageState' должно быть выставлено в 'sending', а после отправки автоматически выставляется в 'sent'. Дополнительно, для отправки поле 'messageDirection' должно содержать значение 'out'.

ВНИМАНИЕ! Все вложения, HTML содержимое, а также нативное неразобранное содержание письма сохраняются в виде вложений, хранятся в файловой системе. Это вносит ограничения на файловую систему, показатель inodes которой может быть быстро исчерпан, если изначально лимитирован в месте хранения вложений.

Тип хранилища: history.

Table 1. Поля класса
Поле Описание

id

Идентификатор.

account_id

Идентификатор родительского email-аккаунта.

folder_id

Идентификатор каталога.

dateTime

Дата-время письма. Используется в том числе при определении партиции хранения в БД. Для отправляемых писем заполняется сервисом-инициатором перед отправкой, используется при формировании очереди. Для полученных писем заполняется автоматически, преимущественно оригинальное время поступления письма на сервер (заголовки Date или Delivery-Date).

messageDirection

Направление письма:

  • in - входящее письмо.

  • out - исходящее/отправленное письмо. Является фильтром для сервиса отправки.

messageType

Тип письма:

  • text - текст

  • html - html документ

  • alternative - наличие альтернатив (чаще всего и текст, и html)

  • undefined - содержимое прочих типов

messageState

Состояние письма:

  • sending - письмо готовое к отправке. Является фильтром для сервиса отправки.

  • sent - письмо отправлено.

  • error - ошибка отправки.

  • received - полученное письмо.

  • raw - письмо получено, но не разобрано по причине сбоя.

  • undefined - неизвестное состояние.

statusText

Заполняется содержанием ошибки, если полученное письмо имеет состояние error, либо ошибка возникла при отправке.

uidValidity

Оригинальный идентификатор IMAP множества (в полученных письмах). Используется для обнаружения следующего неполученного письма.

uid

Оригинальный инкрементальный идентификатор письма в рамках своего IMAP uidValidity (в полученных письмах). Используется для обнаружения следующего неполученного письма.

from

Email-адрес отправителя письма (в полученных письмах)

to

Список email-адресов получателей письма. Автоматически заполняется для полученных писем. Используется при отправке писем.

copy

Список email-адресов других получателей письма через копию (для отправляемых писем).

blindCopy

Список email-адресов скрытых получателей письма (для отправляемых писем).

replyTo

Email-адрес для автоматического ответа. Для отправляемых писем в случае, если значение пустое, берется значение из опций аккаунта (поле 'options.replyTo'), а иначе подставляется значение адреса назначения ('to').

inReplyTo

Email-адрес для подстановки в заголовок In-Reply-To отправляемых писем.

nativeId

Оригинальный идентификатор письма (для полученных писем).

nativeDateTime

Оригинальное время письма (для полученных писем). Извлекается из заголовков Date или Delivery-Date.

recvDateTime

Дата-время фактического получения входящего письма с почтового сервера и создания сущности. Заполняется автоматически для полученных писем.

references

subject

Тема письма.

body

Тело сообщения, если оно не текстовое и не html (для полученных писем).

bodyText

Текст сообщения, при наличии в содержимом блока текстовых данных (text/plain непосредственно или в multipart/alternative). Для отправляемых писем заполняется инициатором перед отправкой. Для полученных писем автоматически заполняется после успешного парсинга письма.

html

HTML содержимое письма (вложение), при наличии в содержимом блока html данных (text/html непосредственно или в multipart/alternative). Для отправляемых писем заполняется инициатором перед отправкой. Для полученных писем автоматически заполняется после успешного парсинга письма. Файл размещается на диске, в сущности сохраняется мета-информация.

size

Размер сообщения (для полученных писем)

attachments

Список вложений, в том числе инлайнов (multipart/mixed). Для отправляемых писем заполняется инициатором перед отправкой. Для полученных писем автоматически заполняется после успешного парсинга письма. Вложения размещаются на диске, в сущности сохраняется мета-информация.

attachmentInfo

Объект - список инлайнов (ресурсов со ссылками из тела письма). При отправке письма с помощью объекта может задаваться специфичный набор параметров. В частности, можно установить для конкретного вложения значение заголовка 'Content-Type'. Для вложений, требующих указание специфических параметров, в объекте должен содержаться ключ - имя файла в коллекции 'attachments', и значение - объект с набором поддерживаемых свойств: 'content_type'.

Например:

{
  "file.ics": {"content_type": "text/calendar; charset=utf-8; method=REQUEST; name=file.ics"}
}

inlineInfo

Объект - список инлайнов (ресурсов со ссылками из тела письма). Размещаются в одной части 'multipart/related' с HTML-телом письма. Для отправки инлайнов следует задавать объект, где ключами выступают Content-Id, а значениями - имена файлов в коллекции attachments.

Например:

{
  "15623784-1562-3784-5906-156237845906": "myfile.png"
}

rawMessage

Исходное нераспарсенное входящее письмо (для полученных писем). Файл размещается на диске, в сущности сохраняется мета-информация.