mail-worker
is a robust Cloudflare Worker built for sending emails with AWS SES and Bun.
Install all dependencies.
bun install
POST
/
(send email to recipient(s))
name type description Authorization optional AUTH_TOKEN
environment variable
name type data type description from required string
sender's email address to required string[]
recipient's email address(es) cc optional string[]
cc recipient's email address bcc optional string[]
bcc recipient's email address subject optional string
email subject html optional string
email content
http code content-type reason 200
text/plain
email sent successfully 400
text/plain
invalid request body 401
text/plain
invalid authentication token 500
text/plain
AWS SES is unavailable/setup incorrectly or the sender is unverified
curl $MAIL_WORKER_ENDPOINT -H "Content-Type: application/json" -d \ '{ "to": ["test@test.com"], "from": "test@test.com", "subject": "test", "html": "test" }'
curl $MAIL_WORKER_ENDPOINT \ -H "Authorization: $AUTH_TOKEN" \ -H "Content-Type: application/json" -d \ '{ "to": ["test@test.com"], "from": "test@test.com", "subject": "test", "html": "test" }'
Your worker must have the following environment variables.
echo $AWS_REGION | npx wrangler secret put AWS_REGION
echo $AWS_ACCESS_KEY_ID | npx wrangler secret put AWS_ACCESS_KEY_ID
echo $AWS_SECRET_ACCESS_KEY | npx wrangler secret put AWS_SECRET_ACCESS_KEY
Optionally, you may secure your endpoint by setting the following environment variable.
echo $AUTH_TOKEN | npx wrangler secret put AUTH_TOKEN
To use any sender email, the email must first be verified. The verification will require the following environment variables. You may populate your environment with the following.
{
echo "AWS_REGION=$AWS_REGION"
echo "AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID"
echo "AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY"
} > .env
Now, pipe your email to the verify-email
script.
echo $EMAIL_ADDRESS | bun verify-email