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 предлагается с открытым исходным кодом.

Работу сервиса анонсировали в сентябре, а его закрытое бета-тестирование стартовало в ноябре.