Python SDK: Mail: входящие письма
ctx.mail() доступен в сценарии обработки входящего письма. Содержимое письма и вложений читайте только для разрешённого запуска, не записывайте его в журнал.
Примеры являются фрагментами тела def run(ctx):. Все методы SDK синхронны, await не нужен.
Методы
available
ctx.mail().available() -> bool
Аргументы не нужны.
Результат: bool.
Есть ли в текущем прогоне проверенное письмо. В ручном и пробном запуске возвращается False.
result = ctx.mail().available()
current
ctx.mail().current() -> dict[str, Any]
Аргументы не нужны.
Результат: dict[str, Any].
Тема, отправитель, текст, вложения и срок хранения текущего письма. Служебные заголовки и чужие адресаты не выдаются. Объём текста ограничен 1 MiB, признак text_truncated сообщает о сокращении.
result = ctx.mail().current()
text
ctx.mail().text() -> str
Аргументы не нужны.
Результат: str.
Получить текст письма без HTML.
result = ctx.mail().text()
attachments
ctx.mail().attachments() -> list[dict[str, Any]]
Аргументы не нужны.
Результат: list[dict[str, Any]].
Список проверенных вложений: id, name, mime, size. Ссылки на загрузку требуют прав текущего пространства.
result = ctx.mail().attachments()
document
ctx.mail().document(id) -> Document
| Аргумент | Тип | Обязателен | Назначение |
|---|---|---|---|
id |
str |
Да | Разрешённый идентификатор вложения/товара по контексту. |
Результат: Document. Объект SDK: используйте его методы, не передавайте целиком в emit.
Извлечь текст, листы Excel, таблицы Word или страницы PDF из собственного вложения. Ссылки не открываются автоматически. Не более восьми разборов документов на прогон.
result = ctx.mail().document('attachment-id')
attachment
ctx.mail().attachment(id) -> bytes
| Аргумент | Тип | Обязателен | Назначение |
|---|---|---|---|
id |
str |
Да | Разрешённый идентификатор вложения/товара по контексту. |
Результат: bytes.
Читает вложение частями и возвращает bytes, до 10 MiB. Для текста используйте .decode("utf-8") только при известной кодировке. Для Excel, PDF или Word используйте document(id), чтобы сохранить структуру.
result = ctx.mail().attachment('attachment-id')
Ошибки и контекст выполнения
Все вызовы синхронны. Неверный аргумент или формат данных может вызвать ValueError/TypeError; отказ платформы или недоступность сервиса вызывает RuntimeError. Отсутствие элемента/значения даёт None либо пустой список только там, где это явно описано. Не превращайте любое исключение в пустой успешный результат. Методы внешних сервисов недоступны в преобразовании выгрузки; см. ограничения преобразований и среду.