export const prerender = false; import type { APIRoute } from 'astro'; import { ImapFlow } from 'imapflow'; import { getAccount } from '../../../lib/mail-accounts'; export const POST: APIRoute = async ({ request }) => { const body = await request.json().catch(() => null); if (!body?.account || !body?.uid) return json({ error: 'Bad request' }, 400); const acct = getAccount(body.account); if (!acct) return json({ error: 'Unknown account' }, 400); const client = new ImapFlow({ host: acct.imap.host, port: acct.imap.port, secure: true, auth: { user: acct.imap.user, pass: acct.imap.password }, logger: false, }); try { await client.connect(); const folders = await client.list(); if (!folders.some(f => f.path === 'Archive')) await client.mailboxCreate('Archive'); const lock = await client.getMailboxLock(body.folder || 'INBOX'); try { await client.messageMove(String(body.uid), 'Archive', { uid: true }); return json({ ok: true }); } finally { lock.release(); } } catch (e: any) { return json({ error: e.message }, 500); } finally { await client.logout().catch(() => {}); } }; function json(data: object, status = 200) { return new Response(JSON.stringify(data), { status, headers: { 'Content-Type': 'application/json' } }); }