Почта
Почта в платформе — это четыре ноды и одно подключение, которое несёт сразу две разные вещи: сервер отправки (SMTP) и сервер чтения ящика (IMAP или POP3). Это не упрощение ради формы: у любого провайдера это два разных хоста с разными портами и разным шифрованием, и завести их порознь было бы двумя подключениями к одному ящику, которые рано или поздно разъедутся по паролю.
Подключение: две ноги, один пароль
Заводится в Настройки → Интеграции, вид — Email. Общая механика (шифрование секретов, права, приоритет порта над полем) — в обзоре интеграций.
Поля формы подключения
Заполнит хосты и порты. Логин и пароль вводятся вручную.
У Gmail, Яндекса и Mail.ru сюда идёт пароль приложения.
Другой хост, не тот же, что у ящика.
Список Провайдер заполняет обе ноги за один клик. Пресетов четыре, и различаются они не только именами хостов:
| Провайдер | Ящик (IMAP) | Отправка (SMTP) | Пароль приложения |
|---|---|---|---|
| Gmail | imap.gmail.com:993 | smtp.gmail.com:587 | обязателен |
| Яндекс.Почта | imap.yandex.ru:993 | smtp.yandex.ru:465 | обязателен |
| Mail.ru | imap.mail.ru:993 | smtp.mail.ru:465 | обязателен |
| Outlook / Microsoft 365 | outlook.office365.com:993 | smtp.office365.com:587 | зависит от политики |
Порт SMTP определяет способ шифрования отправки: 465 — соединение шифруется с первого байта, 587 — сначала открытое соединение, потом переход на TLS. Это не взаимозаменяемые номера: неверный порт даёт не «медленнее», а «не отправляется вовсе».
Хост SMTP оставлять пустым нельзя. У всех четырёх провайдеров выше он отличается от хоста ящика; при пустом поле отправка пытается пойти на хост ящика — и не проходит. Проверка подключения такое поле честно не проверяет, а отмечает как «не настроено»: у подключения, заведённого только ради чтения, отправки нет, и валить проверку из-за этого неправильно.
IMAP или POP3. IMAP — папки, серверный поиск, флаг «прочитано». POP3 не умеет ничего из этого: у него нет папок, нет поиска и нет флагов. Выбор POP3 не «легче», а беднее — три поля ноды чтения перестают что-либо значить (об этом ниже). Берите IMAP, если провайдер его даёт.
Четыре ноды
| Нода | Что делает |
|---|---|
| Настройка Email | выбирает сохранённое подключение и раздаёт его остальным нодам |
| Отправить email | шаг графа: собирает письмо из шаблонов и отправляет по SMTP |
| Получить письма | шаг графа: забирает письма из ящика по критерию |
| Инструмент email | отдаёт отправку, чтение, поиск и ответ агенту как инструменты |
Подключение приходит одним из двух способов: нода Настройка Email проводом данных в
порт email_config — либо выбор подключения прямо в форме рабочей ноды. Порт сильнее поля.
Порт обязательный: если не подключён ни он, ни поле, редактор покажет предупреждение, а
запуск и деплой отклонит — отказ приходит до того, как оплаченный запуск дойдёт до отправки.
Отправка
Все поля письма — шаблонные, то есть в них подставляются значения из запуска:
{{ inputs.input.email }} в получателя, ответ модели в тело. Обязательных два —
получатель и тема; если шаблон в любом из них развернулся в пустую строку, нода падает, а
не отправляет письмо без темы неизвестно кому.
Переключатель «HTML» решает, как провайдер покажет тело: разметкой или текстом как есть. Отправитель по умолчанию — логин подключения; поля «от кого» и «имя отправителя» в дополнительной секции ноды перекрывают его для одного письма. Адрес в конверте письма платформа всегда держит равным адресу в заголовке — иначе проверка SPF на стороне получателя отбивает письмо как подделку.
На выходе нода отдаёт message_id — идентификатор, который она же и присвоила письму.
Он пригождается, чтобы связать отправленное письмо с записью в вашей базе.
Чтение
Нода забирает пачку писем и отдаёт их списком. У каждого письма: uid, тема, отправитель,
получатели, дата, текстовое тело, HTML-тело и признак «прочитано». Рядом — сколько писем
получено и из какой папки.
Что забирать, выбирается полем «что получить»:
| Режим | Что попадает в выборку |
|---|---|
| Непрочитанные | письма без флага «прочитано» — режим по умолчанию |
| Все | вся папка, ограниченная только количеством |
| От отправителя | письма, в поле «от» которых есть указанный адрес |
| С даты | письма, доставленные не раньше даты (ГГГГ-ММ-ДД) |
| Сырой критерий IMAP | выражение IMAP SEARCH целиком — запасной выход, когда четырёх режимов мало |
Количество ограничено сотней писем за вызов. Дата разбирается строго: непонятную дату нода отвергает, а не пропускает молча — иначе выборка «с 1 июля» тихо превратилась бы во «всю папку».
Если выбран POP3, три поля выше не значат ничего: папка всегда входящие, критерий не применяется, флаг не ставится. Нода это не скрывает — в её выводе поле «папка» остаётся пустым, чтобы следующая нода не ветвилась по значению, которого не было.
Сценарий: письмо → поля → запись
Типовая задача выглядит так: раз в N минут забрать новые письма, вытащить из каждого нужные поля (кто написал, по какому заказу, что просит) и положить результат в коллекцию — или ответить сразу.
- Исполнение + данные
- Данные
-
Получить письма в режиме «непрочитанные» с включённой отметкой о прочтении. Это и есть защита от повторной обработки: следующий запуск уже не увидит эти письма.
-
Цикл по списку — нода чтения возвращает пачку, а модель разбирает по одному письму за раз. Про циклы — Циклы и повторы.
-
Модель со структурированным ответом вместо обычной: вы описываете нужные поля, и получаете объект с этими полями, а не абзац текста, который потом придётся парсить.
-
Запись в коллекцию или ответ письмом. Ответ — это та же нода отправки: получатель берётся из разобранного письма, тема — с префиксом «Re:».
Тело письма может быть длинным, а в модель оно поедет целиком и будет оплачено по токенам. Если ящик шумный, дешевле сначала отсечь ненужное — по отправителю прямо в критерии выборки, а не после получения.
Почта как инструмент агента
Инструмент email отдаёт модели четыре операции: отправить письмо, забрать письма,
поискать по тексту и ответить на письмо по его uid. Все четыре включены по умолчанию —
в отличие от календаря, где часть операций выключена. Это стоит помнить: свежий инструмент
email на агенте означает, что модель может отправить письмо от вашего имени.
- Исполнение + данные
- LLM
- Данные
- Расширение
- Исполнение + данные + стрим
Три отличия инструмента от одноимённых нод, которые видно только в работе:
- чтение инструментом никогда не ставит флаг «прочитано». Модель смотрит ящик, а не обрабатывает очередь, и молча съедать курсор она не должна;
- ответ на письмо — это две операции подряд: инструмент сам находит исходное письмо по
uid, берёт из него отправителя и тему и отправляет ответ. Модели достаточноuidи текста; - ошибка не роняет запуск. Инструмент возвращает модели текст ошибки с машинным кодом, и модель может исправиться сама — например, поправить адрес и попробовать ещё раз. Понять, что «неверный пароль» повторять бессмысленно, а «сервер занят» стоит, ей позволяет именно код.
Где это обычно рвётся
| Симптом | Что произошло | Что делать |
|---|---|---|
| Проверка: ящик открылся, SMTP отказал | пароль верный, но отправка идёт не на тот хост или не на тот порт | сверить хост SMTP с пресетом провайдера; порт 465 и 587 не взаимозаменяемы |
| Проверка: «Подключиться не удалось» на обеих ногах | введён пароль от аккаунта | выпустить пароль приложения в настройках безопасности провайдера |
| Проверка говорит «SMTP не настроен» | поле хоста SMTP пустое | заполнить — при пустом поле отправка уйдёт на хост ящика и не пройдёт |
| Каждый запуск приносит одни и те же письма | снята галочка «отметить как прочитанное» при режиме «непрочитанные» | включить галочку; она и есть курсор обработки |
| Письмо ушло без темы / нода упала на «Subject is required» | шаблон темы развернулся в пустую строку | проверить, что нода-источник действительно отдаёт поле; смотреть в запуске, чем поле было заполнено |
| Выбран POP3, режим «от отправителя» ничего не фильтрует | у POP3 нет серверного поиска — критерий игнорируется | перейти на IMAP либо фильтровать после получения |
| Вложение из письма не дошло до графа | чтение разбирает только текст и HTML | вложения не поддерживаются; просить ссылку вместо файла |
| Запуск отклонён: у ноды не подключён обязательный порт | порт email_config пуст и подключение в форме не выбрано | подключить ноду «Настройка Email» в порт или выбрать подключение в форме — порт обязательный, поэтому в редакторе это предупреждение, а на запуске и деплое ошибка |
| Агент говорит, что почта недоступна | подключение выбрано, но не отвечает или не подходит | инструменты объявляются модели в любом случае, и без рабочего подключения вызов возвращает ей текстовую ошибку — смотреть текст вызова инструмента в запуске |
Что дальше
Интеграции: обзор
Как подключения хранятся и кто может их менять.
Запуск по расписанию
Чтобы ящик проверялся сам, а не по кнопке.
Агент и инструменты
Права инструментов, раунды, бюджеты.
Коллекции
Куда складывать разобранные письма.
Шаблоны и переменные
Как получатель и тема собираются из данных запуска.
Справочник нод
Полные схемы всех четырёх почтовых нод.