diff --git a/app/api/mail/route.ts b/app/api/mail/route.ts index b123976..5753e2a 100644 --- a/app/api/mail/route.ts +++ b/app/api/mail/route.ts @@ -204,6 +204,14 @@ export async function GET() { fetch.on('message', (msg) => { let header = ''; let text = ''; + let messageId: number | null = null; + let messageFlags: string[] = []; + + // Handle attributes first + msg.once('attributes', (attrs) => { + messageId = attrs.uid; + messageFlags = attrs.flags || []; + }); msg.on('body', (stream, info) => { let buffer = ''; @@ -220,16 +228,21 @@ export async function GET() { }); msg.on('end', () => { + if (!messageId) { + console.error('No message ID found for email'); + return; + } + const parsedHeader = Imap.parseHeader(header); const email = { - id: msg.attributes.uid, - from: parsedHeader.from[0], - to: parsedHeader.to[0], - subject: parsedHeader.subject[0], - date: parsedHeader.date[0], + id: messageId, + from: parsedHeader.from?.[0] || '', + to: parsedHeader.to?.[0] || '', + subject: parsedHeader.subject?.[0] || '(No subject)', + date: parsedHeader.date?.[0] || new Date().toISOString(), body: text, folder: folderName, - flags: msg.attributes.flags + flags: messageFlags }; emailsByFolder[folderName].push(email); });