@edgemail/core
v0.1.0
Published
Serverless email platform for Cloudflare Workers — core engine
Maintainers
Readme
@edgemail/core
Serverless email for Cloudflare Workers. Send, receive, and schedule emails using D1 + Workers — no external email service required.
Zero monthly cost on Cloudflare's free tier.
What You Get
- Send — Outbound email via Resend, Mailgun, or SMTP relay
- Receive — Inbound email processing via Cloudflare Email Routing
- Schedule — Delayed sends with D1-backed queue + Cron Triggers
- Store — Full email storage in D1 with FTS5 search
- Parse — MIME parsing, attachments, inline images
- Auth — JWT-based mailbox access control
- Migrate — Versioned D1 migrations included
Install
npm install @edgemail/coreQuick Start
import { EmailSender } from '@edgemail/core/sender'
import { EmailReceiver } from '@edgemail/core/receiver'
import { runMigrations } from '@edgemail/core/db'
// In your Worker
export default {
async fetch(request, env) {
// Send an email
const sender = new EmailSender(env)
await sender.send({
to: '[email protected]',
subject: 'Welcome',
html: '<h1>Hello from EdgeMail</h1>',
})
return new Response('Sent')
},
// Receive inbound email
async email(message, env) {
const receiver = new EmailReceiver(env)
await receiver.process(message)
},
// Process scheduled sends
async scheduled(event, env) {
const sender = new EmailSender(env)
await sender.processQueue()
}
}Modules
| Import | What |
|--------|------|
| @edgemail/core | Main entry, all exports |
| @edgemail/core/sender | Outbound email |
| @edgemail/core/receiver | Inbound processing + MIME parsing |
| @edgemail/core/scheduler | Delayed/scheduled sends |
| @edgemail/core/db | D1 database helpers + migrations |
| @edgemail/core/auth | JWT-based access control |
| @edgemail/core/types | TypeScript types |
| @edgemail/core/config | Configuration helpers |
Why Not SendGrid / Resend / SES?
| | EdgeMail | SendGrid | Resend | |---|---|---|---| | Cost | Free (CF free tier) | Free up to 100/day | Free up to 100/day | | Storage | D1 (included) | External DB needed | External DB needed | | Inbound | Built-in | Webhook setup | Webhook setup | | Search | FTS5 (built-in) | Not included | Not included | | Self-hosted | Yes (your Worker) | No | No | | Scheduling | Built-in (Cron) | External queue needed | Not included |
Requirements
- Cloudflare Workers (free plan works)
- D1 database (free tier: 5GB)
- Email Routing enabled (for inbound)
License
MIT
