Budibase/budibase · error · HTTPError

Please contact your platform administrator, SMTP is not conf

Error message

Please contact your platform administrator, SMTP is not configured.

What it means

The password reset flow sends an email containing the reset link, so it requires a configured email transport. reset checks emails.isEmailConfigured() and, if no SMTP configuration exists for the tenant, throws an HTTPError 400 telling the requester to contact their platform administrator.

Source

Thrown at packages/worker/src/sdk/auth/auth.ts:58

    invalidatedSessionCount: sessionResult.invalidatedSessionCount,
  }
}

export async function logout(opts: PlatformLogoutOpts) {
  // TODO: This should be moved out of core and into worker only
  // account-portal can call worker endpoint
  return authCore.platformLogout(opts)
}

// PASSWORD MANAGEMENT

/**
 * Reset the user password, used as part of a forgotten password flow.
 */
export const reset = async (email: string) => {
  const configured = await emails.isEmailConfigured()
  if (!configured) {
    throw new HTTPError(
      "Please contact your platform administrator, SMTP is not configured.",
      400
    )
  }

  const user = await userSdk.core.getGlobalUserByEmail(email)
  // exit if user doesn't exist
  if (!user) {
    return
  }

  // exit if user has sso
  if (await userSdk.db.isPreventPasswordActions(user)) {
    return
  }

  // send password reset
  await emails.sendEmail(email, EmailTemplatePurpose.PASSWORD_RECOVERY, {

View on GitHub (pinned to a81a902e9a)

Solutions

  1. Configure SMTP in the workspace/platform admin email settings (host, port, user, password, from address)
  2. Set the SMTP environment variables (SMTP_HOST, SMTP_PORT, SMTP_USER, SMTP_PASSWORD) for self-hosted deployments
  3. Verify the email config is saved for the correct tenant and hasn't been disabled
  4. As an admin, use an alternative account-recovery path while SMTP is unavailable

Example fix

// environment before
# (no SMTP vars set)
// after (self-hosted .env)
SMTP_HOST=smtp.example.com
SMTP_PORT=587
SMTP_USER=no-reply@example.com
SMTP_PASSWORD=secret
Defensive patterns

Strategy: try-catch

Validate before calling

const configured = await emails.isEmailConfigured()
if (!configured) throw new Error("SMTP must be configured before password resets")

Type guard

null

Try / catch

try {
  await api.requestPasswordReset(email)
} catch (e) {
  if (e.message.includes("SMTP is not configured")) {
    notify("Email is not set up for this platform; contact your administrator")
  }
}

Prevention

When it happens

Trigger: POSTing to the forgotten-password / reset endpoint when the tenant/workspace has no SMTP configuration set up (no admin-configured email settings and no fallback SMTP env vars).

Common situations: Fresh self-hosted install where SMTP was never configured; cloud tenant where the admin hasn't set up email; SMTP config was deleted or credentials expired so isEmailConfigured returns false; users attempting password recovery before admin onboarding completed.

Related errors


AI-assisted analysis of Budibase/budibase@a81a902e9a (2026-08-29). Data as JSON: /api/errors/8955cd31f6fdb184. Report an issue: GitHub.