Перейти к документации
SDK

Черновики

`drafts.list`, `listAll`, `iterate`, `get`, `create`, `update` и `delete`.

Все методы

usage.ts
const page = await openemail.drafts.list({ query: 'invoice', limit: 25 })const draft = await openemail.drafts.get('draft_…') const created = await openemail.drafts.create({  to: ['[email protected]'],  cc: [],  bcc: [],  subject: 'Your September invoice',  html: '<p>Draft body.</p>',  from: '[email protected]',  threadId: 'thread_…',}) const updated = await openemail.drafts.update(created.id!, { subject: 'Revised' })await openemail.drafts.delete(updated.id!)

update сохраняет идентификатор черновика, так что возвращаемое значение всегда то, что вы передали. Неизвестный идентификатор — это 404, а не новый черновик.

list работает постранично так же, как threads.list: pageToken от API приходит как nextCursor и уходит как cursor, а listAll и iterate следуют за ним за вас.

Чтобы отправить черновик, передайте его идентификатор в emails.send. Черновик даёт содержимое, а отправка — конверт.

send-draft.ts
await openemail.emails.send({  from: '[email protected]',  to: '[email protected]',  draftId: 'draft_…',})

Параметры: drafts.create и drafts.update (DraftInput)

tostring[]
Адреса получателей обычными строками, а не в формах `RecipientInput`, которые принимает `emails.send`, потому что этот эндпоинт склеивает массив в список через запятую, нужный драйверу. При создании опущенный массив сохраняется пустым; при обновлении опущенное поле оставляет сохранённых получателей нетронутыми, поскольку обработчик сначала читает черновик и сливает данные.
ccstring[]
Адреса копии, в той же форме обычных строк, что и `to`. Пусто при создании, если опущено, и нетронуто при обновлении, если опущено.
bccstring[]
Адреса скрытой копии, в той же форме обычных строк, что и `to`. Пусто при создании, если опущено, и нетронуто при обновлении, если опущено.
subjectstring
Тема черновика, не длиннее 998 символов — предела строки по RFC 5322. При создании по умолчанию пустая строка, так что тема у черновика есть всегда.
htmlstring
Тело черновика как разметка, не длиннее 1 000 000 символов. Побеждает именно это тело: `html` и `text` питают единственное поле сообщения у драйвера, так что при передаче обоих сохраняется это.
textstring
Текстовое тело, не длиннее 1 000 000 символов, используется только при отсутствии `html`. Черновик хранит одно тело, а не две части, так что переданный здесь текст возвращается в `html` при чтении черновика.
fromstring
Адрес отправителя, сохраняемый в черновике. При обновлении он переносится из сохранённого черновика, если опущен. Драйвер пересобирает всё сообщение из того, что ему передали, так что частичная правка, потерявшая это поле, молча изменила бы выбранного отправителя.
threadIdstring
Привязать черновик к существующей цепочке, чтобы он сохранился как ответ. Как и `from`, при обновлении переносится, если опущен, потому что пересборка сообщения без него отвязала бы ответ от цепочки.

Ответ: DraftResource (drafts.get)

object'draft'
Всегда `draft`.
idstring
Идентификатор черновика. Записи отвечают `SavedDraftResource`, а не целым черновиком, так что читайте идентификатор из результата, а не переиспользуйте отправленный.
tostring[]
Адреса получателей в том виде, в каком их сохранил черновик. Пустой массив, никогда не null, когда их нет.
ccstring[]
Адреса копии как сохранены. Пустой массив, никогда не null, когда их нет.
bccstring[]
Адреса скрытой копии как сохранены. Пустой массив, никогда не null, когда их нет.
subjectstring
Сохранённая тема или пустая строка, когда темы у черновика нет. Это поле никогда не бывает null, так что проверяйте его длину, а не наличие.
htmlstring
Сохранённое тело или пустая строка, когда тела у черновика нет. Отдельного текстового поля на выходе нет: черновик, сохранённый с одним лишь `text`, возвращается здесь.