Runtime API
Background
Section titled “Background”An EmailEvent
is the event type to programmatically process your emails with a Worker. You can reject, forward, or drop emails according to the logic you construct in your Worker.
Syntax: Service Worker
Section titled “Syntax: Service Worker”EmailEvent
can be handled in Workers functions written using the Service Worker syntax by attaching to the email
event with addEventListener
:
addEventListener("email", async (event) => { await event.message.forward("<YOUR_EMAIL>");});
Properties
Section titled “Properties”-
event.message
EmailMessage
Syntax: ES modules
Section titled “Syntax: ES modules”EmailEvent
can be handled in Workers functions written using the ES modules format by adding an email
function to your module's exported handlers:
export default { async email(message, env, ctx) { await message.forward("<YOUR_EMAIL>"); },};
Parameters
Section titled “Parameters”-
message
EmailMessage -
env
object- An object containing the bindings associated with your Worker using ES modules format, such as KV namespaces and Durable Objects.
-
ctx
object- An object containing the context associated with your Worker using ES modules format. Currently, this object just contains the
waitUntil
function.
- An object containing the context associated with your Worker using ES modules format. Currently, this object just contains the
EmailMessage
definition
Section titled “EmailMessage definition” interface EmailMessage<Body = unknown> { readonly from: string; readonly to: string; readonly headers: Headers; readonly raw: ReadableStream; readonly rawSize: number;
public constructor(from: string, to: string, raw: ReadableStream | string);
setReject(reason: string): void; forward(rcptTo: string, headers?: Headers): Promise<void>; reply(message: EmailMessage): Promise<void>;}
-
from
stringEnvelope From
attribute of the email message.
-
to
stringEnvelope To
attribute of the email message.
-
headers
Headers -
raw
ReadableStream- Stream of the email message content.
-
rawSize
number- Size of the email message content.
-
setReject(reasonstring)
: void- Reject this email message by returning a permanent SMTP error back to the connecting client, including the given reason.
-
forward(rcptTostring, headersHeadersoptional)
: Promise- Forward this email message to a verified destination address of the account. If you want, you can add extra headers to the email message. Only
X-*
headers are allowed. - When the promise resolves, the message is confirmed to be forwarded to a verified destination address.
- Forward this email message to a verified destination address of the account. If you want, you can add extra headers to the email message. Only
-
reply(messageEmailMessage)
: Promise- Reply to the sender of this email message with a new EmailMessage object.
- When the promise resolves, the message is confirmed to be replied.
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