diff --git a/backend/src/controllers/cachedEmail.controller.ts b/backend/src/controllers/cachedEmail.controller.ts index 85b20e2d..ca32a703 100644 --- a/backend/src/controllers/cachedEmail.controller.ts +++ b/backend/src/controllers/cachedEmail.controller.ts @@ -749,7 +749,18 @@ export async function downloadAttachment(req: AuthRequest, res: Response): Promi if (email.folder === 'SENT') { imapFolder = 'Sent'; } else if (email.folder === 'SPAM') { - imapFolder = (await findJunkFolderPath(credentials)) || 'Junk'; + // Kein stiller Fallback: findet sich der Junk-Ordner nicht (mehr), + // lieber ein klarer Fehler als aus dem falschen Ordner (INBOX/'Junk') + // die falsche UID zu ziehen. + const junkPath = await findJunkFolderPath(credentials); + if (!junkPath) { + res.status(404).json({ + success: false, + error: 'Postfach hat keinen Spam-/Junk-Ordner (mehr) – Anhang nicht abrufbar', + } as ApiResponse); + return; + } + imapFolder = junkPath; } else { imapFolder = 'INBOX'; } @@ -1426,7 +1437,18 @@ export async function saveAttachmentTo(req: AuthRequest, res: Response): Promise if (email.folder === 'SENT') { imapFolder = 'Sent'; } else if (email.folder === 'SPAM') { - imapFolder = (await findJunkFolderPath(credentials)) || 'Junk'; + // Kein stiller Fallback: findet sich der Junk-Ordner nicht (mehr), + // lieber ein klarer Fehler als aus dem falschen Ordner (INBOX/'Junk') + // die falsche UID zu ziehen. + const junkPath = await findJunkFolderPath(credentials); + if (!junkPath) { + res.status(404).json({ + success: false, + error: 'Postfach hat keinen Spam-/Junk-Ordner (mehr) – Anhang nicht abrufbar', + } as ApiResponse); + return; + } + imapFolder = junkPath; } else { imapFolder = 'INBOX'; } @@ -2244,7 +2266,18 @@ export async function saveAttachmentAsInvoice(req: AuthRequest, res: Response): if (email.folder === 'SENT') { imapFolder = 'Sent'; } else if (email.folder === 'SPAM') { - imapFolder = (await findJunkFolderPath(credentials)) || 'Junk'; + // Kein stiller Fallback: findet sich der Junk-Ordner nicht (mehr), + // lieber ein klarer Fehler als aus dem falschen Ordner (INBOX/'Junk') + // die falsche UID zu ziehen. + const junkPath = await findJunkFolderPath(credentials); + if (!junkPath) { + res.status(404).json({ + success: false, + error: 'Postfach hat keinen Spam-/Junk-Ordner (mehr) – Anhang nicht abrufbar', + } as ApiResponse); + return; + } + imapFolder = junkPath; } else { imapFolder = 'INBOX'; } @@ -2415,7 +2448,18 @@ export async function saveAttachmentAsContractDocument(req: AuthRequest, res: Re if (email.folder === 'SENT') { imapFolder = 'Sent'; } else if (email.folder === 'SPAM') { - imapFolder = (await findJunkFolderPath(credentials)) || 'Junk'; + // Kein stiller Fallback: findet sich der Junk-Ordner nicht (mehr), + // lieber ein klarer Fehler als aus dem falschen Ordner (INBOX/'Junk') + // die falsche UID zu ziehen. + const junkPath = await findJunkFolderPath(credentials); + if (!junkPath) { + res.status(404).json({ + success: false, + error: 'Postfach hat keinen Spam-/Junk-Ordner (mehr) – Anhang nicht abrufbar', + } as ApiResponse); + return; + } + imapFolder = junkPath; } else { imapFolder = 'INBOX'; } diff --git a/backend/src/services/cachedEmail.service.ts b/backend/src/services/cachedEmail.service.ts index fe962fe0..837d4456 100644 --- a/backend/src/services/cachedEmail.service.ts +++ b/backend/src/services/cachedEmail.service.ts @@ -824,7 +824,11 @@ export async function moveEmailToTrash(id: number): Promise