Cloudflare выпустила сервис электронной почты Email Service в публичной бета-версии. Также завершается разработка инструментария для создания агентов, изначально предназначенных для работы с электронной почтой.
Email Routing позволяет получать электронные письма в приложении или агенте. С помощью Email Sending можно отвечать на письма или отправлять исходящие сообщения, чтобы уведомлять пользователей о завершении работы агентов. Остальная часть платформы для разработчиков позволяет создать полноценный почтовый клиент и хук onEmail для Agents SDK в качестве нативной функциональности.
Агенты позволят:
-
привязать для отправки электронную почту, доступную из Workers и Agents SDK;
-
создать новый сервер Email MCP;
-
внедрить команды CLI для работы с электронной почтой Wrangler;
-
использовать навыки программирования;
-
применить приложение-справочник по почтовому ящику Agentic с открытым исходным кодом.
Теперь электронные письма можно отправлять непосредственно из Workers с помощью встроенной привязки Workers — без ключей API и управления секретами:
export default { async fetch(request, env, ctx) { await env.EMAIL.send({ to: "user@example.com", from: "notifications@your-domain.com", subject: "Your order has shipped", text: "Your order #1234 has shipped and is on its way." }); return new Response("Email sent"); },};
Также можно применять любую платформу или язык, используя REST API и SDK для TypeScript, Python и Go:
curl "https://api.cloudflare.com/client/v4/accounts/{account_id}/email-service/send" \ --header "Authorization: Bearer <API_TOKEN>" \ --header "Content-Type: application/json" \ --data '{ "to": "user@example.com", "from": "notifications@your-domain.com", "subject": "Your order has shipped", "text": "Your order #1234 has shipped and is on its way." }'
Настройка записей SPF, DKIM и DMARC происходит автоматически, а, поскольку Email Service — это глобальный сервис, построенный на сети Cloudflare, письма доставляются с низкой задержкой в любую точку мира.
SDK для агентов в Cloudflare до сих пор мог отвечать только синхронно или отправлять электронные письма обладателям учётных записей. Теперь это ограничение снято. При этом агент может получить сообщение, обработать его, ответить и запланировать последующие действия. Он может эскалировать проблему при обнаружении нестандартной ситуации и работать независимо.
Вот как выглядит работа агента поддержки с полным конвейером обработки запросов — получение, сохранение и ответ:
import { Agent, routeAgentEmail } from "agents";import { createAddressBasedEmailResolver, type AgentEmail } from "agents/email";import PostalMime from "postal-mime";export class SupportAgent extends Agent { async onEmail(email: AgentEmail) { const raw = await email.getRaw(); const parsed = await PostalMime.parse(raw); // Persist in agent state this.setState({ ...this.state, ticket: { from: email.from, subject: parsed.subject, body: parsed.text, messageId: parsed.messageId }, }); // Kick off long running background agent task // Or place a message on a Queue to be handled by another Worker // Reply here or in other Worker handler, like a Queue handler await this.sendEmail({ binding: this.env.EMAIL, fromName: "Support Agent", from: "support@yourdomain.com", to: this.state.ticket.from, inReplyTo: this.state.ticket.messageId, subject: `Re: ${this.state.ticket.subject}`, text: `Thanks for reaching out. We received your message about "${this.state.ticket.subject}" and will follow up shortly.` }); }}export default { async email(message, env) { await routeAgentEmail(message, env, { resolver: createAddressBasedEmailResolver("SupportAgent"), }); },} satisfies ExportedHandler<Env>;
Каждый агент получает свою собственную идентификацию из одного домена. Резолвер на основе адреса направляет support@yourdomain.com в экземпляр агента «поддержки», sales@yourdomain.com в экземпляр «продаж» и так далее. Для этого не нужно создавать отдельные почтовые ящики — маршрутизация встроена в адрес. Также можно использовать подадресацию (NotificationAgent+user123@yourdomain.com) для маршрутизации к различным пространствам имён и экземплярам агентов.
Состояние сохраняется между электронными письмами. Поскольку агенты используют Durable Objects, вызов this.setState() означает, что агент запоминает историю переписки, контактную информацию и контекст между сессиями. Почтовый ящик становится памятью агента, без необходимости в отдельной базе данных или векторном хранилище.
Встроена и безопасная маршрутизация ответов. Когда агент отправляет электронное письмо и ожидает ответа, можно подписать заголовки маршрутизации с помощью HMAC-SHA256, чтобы ответы направлялись обратно к тому же экземпляру, который принимал исходное сообщение. Это предотвращает подделку заголовков злоумышленниками для маршрутизации электронных писем к произвольным экземплярам агентов.
Сервис электронной почты предназначен не только для агентов, работающих в Cloudflare, а также предлагает три интеграции. Почта доступна через сервер Cloudflare MCP, тот же сервер на базе Code Mode, который предоставляет агентам доступ ко всему API Cloudflare. С помощью этого сервера MCP агент может обнаруживать и вызывать конечные точки электронной почты для отправки и настройки писем. Письмо с помощью простой подсказки: «Отправить мне уведомление по электронной почте на адрес hello@example.com с моего тестового домена после завершения сборки».
Для агентов, работающих на компьютере или в песочнице с доступом к bash, интерфейс командной строки Wrangler решает проблему контекстного окна MCP. Он начинает работу практически с нулевым контекстным избытком и обнаруживает возможности по запросу с помощью команд --help.
wrangler email send \ --to "teammate@example.com" \ --from "agent@your-domain.com" \ --subject "Build completed" \ --text "The build passed. Deployed to staging."
Cloudflare Email Service предоставляет агентам полное руководство: настройку привязки Workers, отправку электронных писем через REST API или SDK, обработку входящих писем с помощью конфигурации маршрутизации электронной почты, сборку с использованием Agents SDK и управление электронной почтой через Wrangler CLI или MCP. Также рассматриваются лучшие практики обеспечения доставляемости и способы создания писем, которые попадают во входящие, а не в спам.
Во время закрытого бета-тестирования также экспериментировали с почтовыми агентами. Тогда стало ясно, что часто необходимо сохранять участие человека для просмотра писем и отслеживания действий агента. Лучший способ сделать это — иметь полнофункциональный почтовый клиент со встроенной автоматизацией для агентов. В итоге в Cloudflare создали Agentic Inbox: эталонное приложение с полным построением цепочек сообщений, отображением писем, приемом и хранением писем и их вложений, а также автоматическим ответом на письма. В него встроен выделенный сервер MCP, поэтому внешние агенты могут создавать черновики писем для просмотра перед отправкой. Agentic Inbox предлагается с открытым исходным кодом.
Работу сервиса анонсировали в сентябре, а его закрытое бета-тестирование стартовало в ноябре.
ссылка на оригинал статьи https://habr.com/ru/articles/1024546/