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
- 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.
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
- 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.
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
- No email settings found.
- No email recipients found
- Recipient is not part of the team
- Pre-deployment command: Could not find a valid container. Is
- Post-deployment command: Could not find a valid container. I
AI-assisted analysis of coollabsio/coolify@70b9acc424 (2026-08-17).
Data as JSON: /api/errors/19993c410b724bee.
Report an issue: GitHub.