diff --git a/.gitignore b/.gitignore index 93d59c36..cd90d1d6 100644 --- a/.gitignore +++ b/.gitignore @@ -30,7 +30,7 @@ yarn-debug.log* yarn-error.log* # env files (can opt-in for committing if needed) -.env* +.env.local !.env.example # vercel @@ -40,14 +40,14 @@ yarn-error.log* *.tsbuildinfo next-env.d.ts +# wrangler .wrangler wrangler.toml wrangler.email.toml wrangler.cleanup.toml +# wrangler.json 需要提交到 GitHub 用于 Pages 部署 +wrangler.cleanup.json +wrangler.email.json public/workbox-*.js -public/sw.js - -wrangler.json -wrangler.cleanup.json -wrangler.email.json \ No newline at end of file +public/sw.js \ No newline at end of file diff --git a/workers/email-receiver.ts b/workers/email-receiver.ts index 26c6f721..54ce9c35 100644 --- a/workers/email-receiver.ts +++ b/workers/email-receiver.ts @@ -7,15 +7,30 @@ import { WEBHOOK_CONFIG } from '../app/config/webhook' import { EmailMessage } from '../app/lib/webhook' const handleEmail = async (message: ForwardableEmailMessage, env: Env) => { - const db = drizzle(env.DB, { schema: { messages, emails, webhooks } }) + console.log("Received email message:", { + to: message.to, + from: message.from, + subject: message.headers.get('subject') + }) - const parsedMessage = await PostalMime.parse(message.raw) + const db = drizzle(env.DB, { schema: { messages, emails, webhooks } }) - console.log("parsedMessage:", parsedMessage) + let parsedMessage + try { + parsedMessage = await PostalMime.parse(message.raw) + console.log("parsedMessage subject:", parsedMessage.subject) + } catch (parseError) { + console.error("Failed to parse message:", parseError) + return + } try { + // Handle message.to - it might be an array or object + const toAddress = typeof message.to === 'string' ? message.to : message.headers.get('to') || '' + console.log("Looking for email:", toAddress.toLowerCase()) + const targetEmail = await db.query.emails.findFirst({ - where: eq(sql`LOWER(${emails.address})`, message.to.toLowerCase()) + where: eq(sql`LOWER(${emails.address})`, toAddress.toLowerCase()) }) if (!targetEmail) { diff --git a/wrangler.json b/wrangler.json new file mode 100644 index 00000000..15666911 --- /dev/null +++ b/wrangler.json @@ -0,0 +1,21 @@ +{ + "$schema": "node_modules/wrangler/config-schema.json", + "name": "moemail", + "compatibility_date": "2024-03-20", + "compatibility_flags": ["nodejs_compat"], + "pages_build_output_dir": ".vercel/output/static", + "d1_databases": [ + { + "binding": "DB", + "database_name": "moemail-local", + "database_id": "4cd36273-f0af-417d-9d6f-caa396860b53", + "migrations_dir": "drizzle" + } + ], + "kv_namespaces": [ + { + "binding": "SITE_CONFIG", + "id": "206ee89221214b27988a8ea691eb3a0e" + } + ] +}