Почта

Почта в платформе — это четыре ноды и одно подключение, которое несёт сразу две разные вещи: сервер отправки (SMTP) и сервер чтения ящика (IMAP или POP3). Это не упрощение ради формы: у любого провайдера это два разных хоста с разными портами и разным шифрованием, и завести их порознь было бы двумя подключениями к одному ящику, которые рано или поздно разъедутся по паролю.

Подключение: две ноги, один пароль

Заводится в НастройкиИнтеграции, вид — Email. Общая механика (шифрование секретов, права, приоритет порта над полем) — в обзоре интеграций.

Email

Поля формы подключения

Провайдер
Gmail

Заполнит хосты и порты. Логин и пароль вводятся вручную.

Протокол
IMAP
Хост IMAP / POP3*
imap.gmail.com
Порт
993
Имя пользователя*
support@example.com
Пароль*
••••••••

У Gmail, Яндекса и Mail.ru сюда идёт пароль приложения.

Хост SMTP
smtp.gmail.com

Другой хост, не тот же, что у ящика.

Порт SMTP
587

Список Провайдер заполняет обе ноги за один клик. Пресетов четыре, и различаются они не только именами хостов:

ПровайдерЯщик (IMAP)Отправка (SMTP)Пароль приложения
Gmailimap.gmail.com:993smtp.gmail.com:587обязателен
Яндекс.Почтаimap.yandex.ru:993smtp.yandex.ru:465обязателен
Mail.ruimap.mail.ru:993smtp.mail.ru:465обязателен
Outlook / Microsoft 365outlook.office365.com:993smtp.office365.com:587зависит от политики

Порт SMTP определяет способ шифрования отправки: 465 — соединение шифруется с первого байта, 587 — сначала открытое соединение, потом переход на TLS. Это не взаимозаменяемые номера: неверный порт даёт не «медленнее», а «не отправляется вовсе».

Хост SMTP оставлять пустым нельзя. У всех четырёх провайдеров выше он отличается от хоста ящика; при пустом поле отправка пытается пойти на хост ящика — и не проходит. Проверка подключения такое поле честно не проверяет, а отмечает как «не настроено»: у подключения, заведённого только ради чтения, отправки нет, и валить проверку из-за этого неправильно.

IMAP или POP3. IMAP — папки, серверный поиск, флаг «прочитано». POP3 не умеет ничего из этого: у него нет папок, нет поиска и нет флагов. Выбор POP3 не «легче», а беднее — три поля ноды чтения перестают что-либо значить (об этом ниже). Берите IMAP, если провайдер его даёт.

Четыре ноды

НодаЧто делает
Настройка Emailвыбирает сохранённое подключение и раздаёт его остальным нодам
Отправить emailшаг графа: собирает письмо из шаблонов и отправляет по SMTP
Получить письмашаг графа: забирает письма из ящика по критерию
Инструмент emailотдаёт отправку, чтение, поиск и ответ агенту как инструменты

Подключение приходит одним из двух способов: нода Настройка Email проводом данных в порт email_config — либо выбор подключения прямо в форме рабочей ноды. Порт сильнее поля. Порт обязательный: если не подключён ни он, ни поле, редактор покажет предупреждение, а запуск и деплой отклонит — отказ приходит до того, как оплаченный запуск дойдёт до отправки.

Отправка

Отправить email
Email ConfigSuccess

Все поля письма — шаблонные, то есть в них подставляются значения из запуска: {{ inputs.input.email }} в получателя, ответ модели в тело. Обязательных два — получатель и тема; если шаблон в любом из них развернулся в пустую строку, нода падает, а не отправляет письмо без темы неизвестно кому.

Переключатель «HTML» решает, как провайдер покажет тело: разметкой или текстом как есть. Отправитель по умолчанию — логин подключения; поля «от кого» и «имя отправителя» в дополнительной секции ноды перекрывают его для одного письма. Адрес в конверте письма платформа всегда держит равным адресу в заголовке — иначе проверка SPF на стороне получателя отбивает письмо как подделку.

На выходе нода отдаёт message_id — идентификатор, который она же и присвоила письму. Он пригождается, чтобы связать отправленное письмо с записью в вашей базе.

Чтение

Получить письма
Email ConfigSuccess

Нода забирает пачку писем и отдаёт их списком. У каждого письма: uid, тема, отправитель, получатели, дата, текстовое тело, HTML-тело и признак «прочитано». Рядом — сколько писем получено и из какой папки.

Что забирать, выбирается полем «что получить»:

РежимЧто попадает в выборку
Непрочитанныеписьма без флага «прочитано» — режим по умолчанию
Всевся папка, ограниченная только количеством
От отправителяписьма, в поле «от» которых есть указанный адрес
С датыписьма, доставленные не раньше даты (ГГГГ-ММ-ДД)
Сырой критерий IMAPвыражение IMAP SEARCH целиком — запасной выход, когда четырёх режимов мало

Количество ограничено сотней писем за вызов. Дата разбирается строго: непонятную дату нода отвергает, а не пропускает молча — иначе выборка «с 1 июля» тихо превратилась бы во «всю папку».

Если выбран POP3, три поля выше не значат ничего: папка всегда входящие, критерий не применяется, флаг не ставится. Нода это не скрывает — в её выводе поле «папка» остаётся пустым, чтобы следующая нода не ветвилась по значению, которого не было.

Сценарий: письмо → поля → запись

Типовая задача выглядит так: раз в N минут забрать новые письма, вытащить из каждого нужные поля (кто написал, по какому заказу, что просит) и положить результат в коллекцию — или ответить сразу.

Вход
Настройка Email
Получить письма
Для каждого
LLM со структурированным выводом
БД: вставка
Выход
  • Исполнение + данные
  • Данные
Разбор входящих: цикл по письмам, извлечение полей моделью, запись в коллекцию.
  1. Получить письма в режиме «непрочитанные» с включённой отметкой о прочтении. Это и есть защита от повторной обработки: следующий запуск уже не увидит эти письма.

  2. Цикл по списку — нода чтения возвращает пачку, а модель разбирает по одному письму за раз. Про циклы — Циклы и повторы.

  3. Модель со структурированным ответом вместо обычной: вы описываете нужные поля, и получаете объект с этими полями, а не абзац текста, который потом придётся парсить.

  4. Запись в коллекцию или ответ письмом. Ответ — это та же нода отправки: получатель берётся из разобранного письма, тема — с префиксом «Re:».

Тело письма может быть длинным, а в модель оно поедет целиком и будет оплачено по токенам. Если ящик шумный, дешевле сначала отсечь ненужное — по отправителю прямо в критерии выборки, а не после получения.

Почта как инструмент агента

Инструмент email отдаёт модели четыре операции: отправить письмо, забрать письма, поискать по тексту и ответить на письмо по его uid. Все четыре включены по умолчанию — в отличие от календаря, где часть операций выключена. Это стоит помнить: свежий инструмент email на агенте означает, что модель может отправить письмо от вашего имени.

Вход
LLM
Настройка Email
Инструмент emailT
ИИ-агент
Выход
  • Исполнение + данные
  • LLM
  • Данные
  • Расширение
  • Исполнение + данные + стрим
Почта у агента: конфигурация приходит в инструмент проводом данных, инструмент — в агента конфигурационной связью.

Три отличия инструмента от одноимённых нод, которые видно только в работе:

  • чтение инструментом никогда не ставит флаг «прочитано». Модель смотрит ящик, а не обрабатывает очередь, и молча съедать курсор она не должна;
  • ответ на письмо — это две операции подряд: инструмент сам находит исходное письмо по uid, берёт из него отправителя и тему и отправляет ответ. Модели достаточно uid и текста;
  • ошибка не роняет запуск. Инструмент возвращает модели текст ошибки с машинным кодом, и модель может исправиться сама — например, поправить адрес и попробовать ещё раз. Понять, что «неверный пароль» повторять бессмысленно, а «сервер занят» стоит, ей позволяет именно код.

Где это обычно рвётся

СимптомЧто произошлоЧто делать
Проверка: ящик открылся, SMTP отказалпароль верный, но отправка идёт не на тот хост или не на тот портсверить хост SMTP с пресетом провайдера; порт 465 и 587 не взаимозаменяемы
Проверка: «Подключиться не удалось» на обеих ногахвведён пароль от аккаунтавыпустить пароль приложения в настройках безопасности провайдера
Проверка говорит «SMTP не настроен»поле хоста SMTP пустоезаполнить — при пустом поле отправка уйдёт на хост ящика и не пройдёт
Каждый запуск приносит одни и те же письмаснята галочка «отметить как прочитанное» при режиме «непрочитанные»включить галочку; она и есть курсор обработки
Письмо ушло без темы / нода упала на «Subject is required»шаблон темы развернулся в пустую строкупроверить, что нода-источник действительно отдаёт поле; смотреть в запуске, чем поле было заполнено
Выбран POP3, режим «от отправителя» ничего не фильтруету POP3 нет серверного поиска — критерий игнорируетсяперейти на IMAP либо фильтровать после получения
Вложение из письма не дошло до графачтение разбирает только текст и HTMLвложения не поддерживаются; просить ссылку вместо файла
Запуск отклонён: у ноды не подключён обязательный портпорт email_config пуст и подключение в форме не выбраноподключить ноду «Настройка Email» в порт или выбрать подключение в форме — порт обязательный, поэтому в редакторе это предупреждение, а на запуске и деплое ошибка
Агент говорит, что почта недоступнаподключение выбрано, но не отвечает или не подходитинструменты объявляются модели в любом случае, и без рабочего подключения вызов возвращает ей текстовую ошибку — смотреть текст вызова инструмента в запуске

Что дальше