cloudflare-email-backup
v0.0.6
Published
Backup incoming and outgoing emails with Cloudflare R2 and D1.
Downloads
30
Maintainers
Readme
Cloudflare Email Backup
Backup incoming and outgoing emails with Cloudflare R2 and D1.
R2 is required, D1 is optional.
Initialize D1
CREATE TABLE `emails` (
`id` TEXT PRIMARY KEY NOT NULL,
`from` TEXT NOT NULL,
`to` TEXT NOT NULL,
`key` TEXT
);
Usage
Store all incoming emails (and replies) to R2 (backup/<domain>/<username>/<message-id>.eml
, e.g. backup/example.com/john.doe/123456789.eml
) and D1.
import { EmailKit, EmailRouter, REJECT_ALL } from "cloudflare-email";
import { Backup } from "cloudflare-email-backup";
interface Env {
R2: R2Bucket;
D1: D1Database;
}
export default {
async email(message: ForwardableEmailMessage, env: Env, ctx: ExecutionContext): Promise<void> {
const router = new EmailRouter()
.match(/@some\.domain$/, some_handler)
.match(...REJECT_ALL("Your email is rejected! :P"));
const kit = new EmailKit()
.use(new Backup({ bucket: env.R2, prefix: "backup", database: env.D1 }))
.use(router);
await kit.process(message);
},
};