{"record":{"id":"2d56a59ad8dedd9c","repo":"pentaho/pentaho-kettle","slug":"jobgetmailsfrompop-error-openingdefaultfolder","errorCode":null,"errorMessage":"JobGetMailsFromPOP.Error.OpeningDefaultFolder","messagePattern":"JobGetMailsFromPOP\\.Error\\.OpeningDefaultFolder","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"plugins/email-messages/impl/src/main/java/org/pentaho/di/job/entries/getpop/MailConnection.java","lineNumber":479,"sourceCode":"        openMboxFolder( foldername, defaultFolder );\n        return;\n      }\n\n      if ( getFolder() != null ) {\n        closeFolder( true );\n      }\n\n      if ( defaultFolder ) {\n        openDefaultFolder();\n      } else {\n        openSpecifiedFolder( foldername );\n      }\n\n      openFolderWithMode();\n      logFolderDetails();\n\n    } catch ( Exception e ) {\n      throw new KettleException( defaultFolder\n        ? BaseMessages.getString( PKG, \"JobGetMailsFromPOP.Error.OpeningDefaultFolder\" )\n        : BaseMessages.getString( PKG, \"JobGetMailsFromPOP.Error.OpeningFolder\", foldername ), e );\n    }\n  }\n\n  private void openMboxFolder( String foldername, boolean defaultFolder ) {\n    this.mboxFolderName = defaultFolder ? MailConnectionMeta.INBOX_FOLDER : Const.NVL( foldername, \"\" );\n    this.folder = null;\n    this.messages = null;\n    this.message = null;\n    this.messagenr = -1;\n  }\n\n  private void openDefaultFolder() throws KettleException, MessagingException {\n    if ( protocol == MailConnectionMeta.PROTOCOL_MBOX ) {\n      this.folder = this.store.getDefaultFolder();\n    } else {\n      this.folder = getRecursiveFolder( MailConnectionMeta.INBOX_FOLDER );","sourceCodeStart":461,"sourceCodeEnd":497,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/plugins/email-messages/impl/src/main/java/org/pentaho/di/job/entries/getpop/MailConnection.java#L461-L497","documentation":"MailConnection.openFolder() wraps exceptions from openFolderWithMode()/logFolderDetails() into a KettleException. When the folder is the default one the message is JobGetMailsFromPOP.Error.OpeningDefaultFolder; otherwise Error.OpeningFolder with the folder name. It means the store was connected but the folder could not be opened (READ_ONLY/READ_WRITE).","triggerScenarios":"openFolder(...) delegates to openDefaultFolder/openSpecifiedFolder and the underlying folder.open(mode) throws MessagingException, or openDefaultFolder/openSpecifiedFolder themselves throw (invalid folder).","commonSituations":"Typo in IMAP folder path, folder locked by another client, POP3 store opened with a non-INBOX folder, mbox file unreadable, permissions denied on the mailbox.","solutions":["Check the exact folder name/path in the job entry (IMAP uses paths like INBOX.Subfolder).","Ensure the folder isn't locked/in use and the account has rights to open it.","Inspect the chained cause for the concrete MessagingException (folder not found vs access denied).","For POP3, leave folder as INBOX — POP3 has no other folders."],"exampleFix":"// before\nopenFolder(\"Inbos\", false);\n// after\nopenFolder(\"INBOX\", true);","handlingStrategy":"try-catch","validationCode":"// connect first, then verify folder presence\nmailConnection.connect();\njavax.mail.Folder f = mailConnection.getStore().getFolder(\"INBOX.Archive\");\nboolean ok = f != null && f.exists();","typeGuard":null,"tryCatchPattern":"try {\n  mailConnection.openFolder(folderName, isDefault);\n} catch (KettleException e) {\n  logError(\"Folder open failed for '\" + folderName + \"': \" + e.getCause(), e);\n  throw e;\n}","preventionTips":["Copy exact folder paths from a mail client","Remember IMAP hierarchy delimiter is usually '.' not '/'","Use default folder (INBOX) for POP3","Check account permissions to open target folders"],"tags":["javamail","imap","folder","kettle","email"],"backgroundTag":"resource-not-found","analyzedSha":"f3058517a153da500bf4551f46d79b91bf8ec552","analyzedAt":"2026-09-13T14:04:16.340Z","contentChangedAt":"2026-09-13T14:04:16.340Z","schemaVersion":2},"datasetVersion":"2026-09-20T23:17:15.980Z"}