{"record":{"id":"19993c410b724bee","repo":"coollabsio/coolify","slug":"no-email-settings-found-19993c","errorCode":null,"errorMessage":"No email settings found.","messagePattern":"No email settings found\\.","errorType":"exception","errorClass":"Exception","httpStatus":null,"severity":"error","filePath":"app/Notifications/TransactionalEmails/ResetPassword.php","lineNumber":40,"sourceCode":"        $this->settings = instanceSettings();\n        $this->token = $token;\n    }\n\n    public static function createUrlUsing($callback)\n    {\n        static::$createUrlCallback = $callback;\n    }\n\n    public static function toMailUsing($callback)\n    {\n        static::$toMailCallback = $callback;\n    }\n\n    public function via($notifiable)\n    {\n        $type = set_transanctional_email_settings();\n        if (blank($type)) {\n            throw new Exception('No email settings found.');\n        }\n\n        return ['mail'];\n    }\n\n    public function toMail($notifiable)\n    {\n        if (static::$toMailCallback) {\n            return call_user_func(static::$toMailCallback, $notifiable, $this->token);\n        }\n\n        return $this->buildMailMessage($this->resetUrl($notifiable));\n    }\n\n    protected function buildMailMessage($url)\n    {\n        $mail = new MailMessage;\n        $mail->subject('Coolify: Reset Password');","sourceCodeStart":22,"sourceCodeEnd":58,"githubUrl":"https://github.com/coollabsio/coolify/blob/70b9acc42467278373e00de77abb40684e25b395/app/Notifications/TransactionalEmails/ResetPassword.php#L22-L58","documentation":"ResetPassword (Laravel's password-reset notification customized by Coolify) decides channels in via() by calling set_transanctional_email_settings(); when neither SMTP nor Resend is enabled at instance level the helper returns blank and via() throws. The user-visible symptom is that password reset emails fail on any instance without email configured.","triggerScenarios":"User requests a password reset on an instance where SMTP/Resend was never configured or both toggles are off; settings saved with credentials but the enable flag left false; instance settings reset after migration.","commonSituations":"Self-hosted single-admin instances skipping email setup; admins disabling email temporarily and forgetting reset emails depend on it; new deployments before the email step of setup docs.","solutions":["Instance admin: enable SMTP or Resend in instance email settings (Settings → Notifications/Email) and save with the enabled checkbox checked.","Use the settings' test mail feature to confirm the transport works end to end.","Retry the password reset request afterwards.","Until email is configured, reset passwords via CLI (artisan tinker password hash update) as a workaround."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"// Before dispatching the reset link\n$type = set_transanctional_email_settings();\nif (blank($type)) {\n    return back()->withErrors(['email' => 'Password reset email is unavailable: configure SMTP or Resend in instance settings.']);\n}","typeGuard":null,"tryCatchPattern":"try { $user->sendPasswordResetNotification($token); } catch (Exception $e) { if ($e->getMessage() === 'No email settings found.') { log admin-facing alert about unconfigured email and return a neutral user message; } else { throw $e; } }","preventionTips":["Complete SMTP/Resend setup during initial install, before users can reach the login flow.","Add a health check that hits the reset endpoint and asserts no 'No email settings found' in logs.","When toggling email providers off for migration, temporarily disable password-reset UI."],"tags":["email","password-reset","smtp","resend","configuration","coolify"],"backgroundTag":"email-not-configured","analyzedSha":"70b9acc42467278373e00de77abb40684e25b395","analyzedAt":"2026-08-17T01:41:01.313Z","schemaVersion":2},"datasetVersion":"2026-08-17T04:17:16.089Z"}