Changelog
New updates and improvements at Cloudflare. Subscribe to RSS
Threaded replies now possible in Email Workers
Mar 12, 2025, 06:00 PM
We’re removing some of the restrictions in Email Routing so that AI Agents and task automation can better handle email workflows, including how Workers can reply to incoming emails.
It's now possible to keep a threaded email conversation with an Email Worker script as long as:
- The incoming email has to have valid DMARC ↗.
- The email can only be replied to once in the same
EmailMessage
event. - The recipient in the reply must match the incoming sender.
- The outgoing sender domain must match the same domain that received the email.
- Every time an email passes through Email Routing or another MTA, an entry is added to the
References
list. We stop accepting replies to emails with more than 100References
entries to prevent abuse or accidental loops.
Here's an example of a Worker responding to Emails using a Workers AI model:
import PostalMime from "postal-mime";import {createMimeMessage} from "mimetext"import { EmailMessage } from "cloudflare:email";
export default { async email(message, env, ctx) { const email = await PostalMime.parse(message.raw) const res = await env.AI.run('@cf/meta/llama-2-7b-chat-fp16', { messages: [{ role: "user", content: email.text ?? '' }] })
// message-id is generated by mimetext const response = createMimeMessage() response.setHeader("In-Reply-To", message.headers.get("Message-ID")!); response.setSender("agent@example.com"); response.setRecipient(message.from); response.setSubject("Llama response"); response.addMessage({ contentType: 'text/plain', data: res instanceof ReadableStream ? await new Response(res).text() : res.response! })
const replyMessage = new EmailMessage("<email>", message.from, response.asRaw()); await message.reply(replyMessage) }} satisfies ExportedHandler<Env>;
See Reply to emails from Workers for more information.
Was this helpful?
- Resources
- API
- New to Cloudflare?
- Products
- Sponsorships
- Open Source
- Support
- Help Center
- System Status
- Compliance
- GDPR
- Company
- cloudflare.com
- Our team
- Careers
- 2025 Cloudflare, Inc.
- Privacy Policy
- Terms of Use
- Report Security Issues
- Trademark