{"record":{"id":"942cdfe0dd0b2c89","repo":"flowable/flowable-engine","slug":"the-mail-client-provider-is-not-an-instance-of-def-942cdf","errorCode":null,"errorMessage":"The mail client provider is not an instance of DefaultMailClientProvider. Use setMailClientProvider instead.","messagePattern":"The mail client provider is not an instance of DefaultMailClientProvider\\. Use setMailClientProvider instead\\.","errorType":"exception","errorClass":"FlowableException","httpStatus":null,"severity":"error","filePath":"modules/flowable-engine/src/main/java/org/flowable/engine/ProcessEngineConfiguration.java","lineNumber":276,"sourceCode":"    }\n\n    /**\n     * @deprecated use {@link #getMailClientProvider()} and {@link MailClientProvider#getMailClient(String)} with {@code null} instead\n     */\n    @Deprecated\n    public FlowableMailClient getDefaultMailClient() {\n        return mailClientProvider.getMailClient(null);\n    }\n\n    /**\n     * @deprecated use {@link #setMailClientProvider(MailClientProvider)} instead\n     */\n    @Deprecated\n    public ProcessEngineConfiguration setDefaultMailClient(FlowableMailClient defaultMailClient) {\n        if (mailClientProvider instanceof DefaultMailClientProvider defaultProvider) {\n            defaultProvider.setDefaultMailClient(defaultMailClient);\n        } else {\n            throw new FlowableException(\"The mail client provider is not an instance of DefaultMailClientProvider. \"\n                    + \"Use setMailClientProvider instead.\");\n        }\n        return this;\n    }\n\n    public MailServerInfo getDefaultMailServer() {\n        return getOrCreateDefaultMaiLServer();\n    }\n\n    public ProcessEngineConfiguration setDefaultMailServer(MailServerInfo defaultMailServer) {\n        this.defaultMailServer = defaultMailServer;\n        return this;\n    }\n\n    protected MailServerInfo getOrCreateDefaultMaiLServer() {\n        if (defaultMailServer == null) {\n            defaultMailServer = new MailServerInfo();\n            defaultMailServer.setMailServerHost(\"localhost\");","sourceCodeStart":258,"sourceCodeEnd":294,"githubUrl":"https://github.com/flowable/flowable-engine/blob/d6d39ce1c69ff244f2d9dc6af756a9b95e865586/modules/flowable-engine/src/main/java/org/flowable/engine/ProcessEngineConfiguration.java#L258-L294","documentation":"The deprecated setDefaultMailClient(FlowableMailClient) only works when the configured mailClientProvider is (or implements) DefaultMailClientProvider, because it delegates to that provider's setDefaultMailClient. If a custom MailClientProvider was installed, Flowable throws instead of silently bypassing it, and directs you to configure the client via setMailClientProvider.","triggerScenarios":"Calling processEngineConfiguration.setDefaultMailClient(client) after having set a custom MailClientProvider via setMailClientProvider(...) that is not a DefaultMailClientProvider.","commonSituations":"Applications integrating a custom mail provider (e.g. sending via a provider SDK) then upgrading Flowable code that still uses the deprecated setter; migration from the old mail-server properties to the new mail-client API.","solutions":["Create a DefaultMailClientProvider, set the default client on it, and pass it via setMailClientProvider(...)","Call setDefaultMailClient before installing any custom provider (only valid if the default provider is still in place)","Remove the custom provider if you don't actually need provider-level control"],"exampleFix":"// before\nconfig.setMailClientProvider(customProvider);\nconfig.setDefaultMailClient(new SimpleMailClient());\n\n// after\nDefaultMailClientProvider provider = new DefaultMailClientProvider();\nprovider.setDefaultMailClient(new SimpleMailClient());\nconfig.setMailClientProvider(provider);","handlingStrategy":"validation","validationCode":"if (!(config.getMailClientProvider() instanceof DefaultMailClientProvider)) {\n    throw new IllegalStateException(\"setDefaultMailClient requires DefaultMailClientProvider\");\n}\nconfig.setDefaultMailClient(client);","typeGuard":"boolean canSetDefaultMailClient(ProcessEngineConfiguration c) {\n    return c.getMailClientProvider() instanceof DefaultMailClientProvider;\n}","tryCatchPattern":null,"preventionTips":["Stop using the @Deprecated setDefaultMailClient; configure a DefaultMailClientProvider up front","If you install a custom provider, migrate all mail-client configuration into it"],"tags":["flowable","mail","deprecated"],"backgroundTag":"deprecated-api-usage","analyzedSha":"d6d39ce1c69ff244f2d9dc6af756a9b95e865586","analyzedAt":"2026-09-11T06:41:19.413Z","contentChangedAt":"2026-09-11T06:41:19.413Z","schemaVersion":2},"datasetVersion":"2026-09-18T11:17:12.947Z"}