From ae1151cf5d16bf868469b8924cbd9956d7848e79 Mon Sep 17 00:00:00 2001 From: neo773 <62795688+neo773@users.noreply.github.com> Date: Mon, 26 Jan 2026 22:44:26 +0530 Subject: [PATCH] IMAP fix edge case of nested folder filtering of unwanted folders (#17428) Fixes this edge case I saw on a customer's account, where INBOX was the parent folder of standard folders edge case folders --- .../imap/services/imap-get-all-folders.service.ts | 2 +- ...et-sent-folder-candidates-by-regex.util.spec.ts | 14 ++++++++++++++ .../get-sent-folder-candidates-by-regex.util.ts | 2 +- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/packages/twenty-server/src/modules/messaging/message-folder-manager/drivers/imap/services/imap-get-all-folders.service.ts b/packages/twenty-server/src/modules/messaging/message-folder-manager/drivers/imap/services/imap-get-all-folders.service.ts index b8eb1ecd83..f2a0c1a374 100644 --- a/packages/twenty-server/src/modules/messaging/message-folder-manager/drivers/imap/services/imap-get-all-folders.service.ts +++ b/packages/twenty-server/src/modules/messaging/message-folder-manager/drivers/imap/services/imap-get-all-folders.service.ts @@ -102,7 +102,7 @@ export class ImapGetAllFoldersService implements MessageFolderDriver { pathToExternalIdMap.set(mailbox.path, externalId); if (this.isValidMailbox(mailbox, folders)) { - const standardFolder = getStandardFolderByRegex(mailbox.path); + const standardFolder = getStandardFolderByRegex(mailbox.name); if (!shouldCreateFolderByDefault(standardFolder)) { continue; diff --git a/packages/twenty-server/src/modules/messaging/message-import-manager/drivers/imap/utils/__tests__/get-sent-folder-candidates-by-regex.util.spec.ts b/packages/twenty-server/src/modules/messaging/message-import-manager/drivers/imap/utils/__tests__/get-sent-folder-candidates-by-regex.util.spec.ts index 5334507c66..b6fd97b5f4 100644 --- a/packages/twenty-server/src/modules/messaging/message-import-manager/drivers/imap/utils/__tests__/get-sent-folder-candidates-by-regex.util.spec.ts +++ b/packages/twenty-server/src/modules/messaging/message-import-manager/drivers/imap/utils/__tests__/get-sent-folder-candidates-by-regex.util.spec.ts @@ -141,4 +141,18 @@ describe('getSentFolderCandidatesByRegex', () => { expect(result).toEqual([]); }); + + it('matches Sent folder when nested under INBOX', () => { + const input: ListResponse[] = [ + { path: 'INBOX', name: 'Inbox' } as ListResponse, + { path: 'INBOX/Sent', name: 'Sent' } as ListResponse, + { path: 'INBOX/Archive', name: 'Archive' } as ListResponse, + ]; + + const result = getImapSentFolderCandidatesByRegex(input); + + expect(result).toHaveLength(1); + expect(result[0].path).toBe('INBOX/Sent'); + expect(result[0].name).toBe('Sent'); + }); }); diff --git a/packages/twenty-server/src/modules/messaging/message-import-manager/drivers/imap/utils/get-sent-folder-candidates-by-regex.util.ts b/packages/twenty-server/src/modules/messaging/message-import-manager/drivers/imap/utils/get-sent-folder-candidates-by-regex.util.ts index 142330cffc..cbc601cd5c 100644 --- a/packages/twenty-server/src/modules/messaging/message-import-manager/drivers/imap/utils/get-sent-folder-candidates-by-regex.util.ts +++ b/packages/twenty-server/src/modules/messaging/message-import-manager/drivers/imap/utils/get-sent-folder-candidates-by-regex.util.ts @@ -9,7 +9,7 @@ export function getImapSentFolderCandidatesByRegex( const regexCandidateFolders: string[] = []; for (const folder of list) { - const standardFolder = getStandardFolderByRegex(folder.path); + const standardFolder = getStandardFolderByRegex(folder.name); if (standardFolder === StandardFolder.SENT) { regexCandidateFolders.push(folder.path);