Сервис электронной почты Cloudflare Email Service вышел в публичной бета-версии

от автора

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/