coollabsio/coolify · error · Exception

No email settings found.

Error message

No email settings found.

What it means

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.

Source

Thrown at app/Notifications/TransactionalEmails/ResetPassword.php:40

        $this->settings = instanceSettings();
        $this->token = $token;
    }

    public static function createUrlUsing($callback)
    {
        static::$createUrlCallback = $callback;
    }

    public static function toMailUsing($callback)
    {
        static::$toMailCallback = $callback;
    }

    public function via($notifiable)
    {
        $type = set_transanctional_email_settings();
        if (blank($type)) {
            throw new Exception('No email settings found.');
        }

        return ['mail'];
    }

    public function toMail($notifiable)
    {
        if (static::$toMailCallback) {
            return call_user_func(static::$toMailCallback, $notifiable, $this->token);
        }

        return $this->buildMailMessage($this->resetUrl($notifiable));
    }

    protected function buildMailMessage($url)
    {
        $mail = new MailMessage;
        $mail->subject('Coolify: Reset Password');

View on GitHub (pinned to 70b9acc424)

Solutions

  1. Instance admin: enable SMTP or Resend in instance email settings (Settings → Notifications/Email) and save with the enabled checkbox checked.
  2. Use the settings' test mail feature to confirm the transport works end to end.
  3. Retry the password reset request afterwards.
  4. Until email is configured, reset passwords via CLI (artisan tinker password hash update) as a workaround.
Defensive patterns

Strategy: validation

Validate before calling

// Before dispatching the reset link
$type = set_transanctional_email_settings();
if (blank($type)) {
    return back()->withErrors(['email' => 'Password reset email is unavailable: configure SMTP or Resend in instance settings.']);
}

Try / catch

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; } }

Prevention

When it happens

Trigger: 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.

Common situations: 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.

Related errors


AI-assisted analysis of coollabsio/coolify@70b9acc424 (2026-08-17). Data as JSON: /api/errors/19993c410b724bee. Report an issue: GitHub.