diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini
index a809f49eeb..4a79ffa7eb 100644
--- a/options/locale/locale_en-US.ini
+++ b/options/locale/locale_en-US.ini
@@ -303,7 +303,8 @@ openid_connect_desc = The chosen OpenID URI is unknown. Associate it with a new
 openid_register_title = Create new account
 openid_register_desc = The chosen OpenID URI is unknown. Associate it with a new account here.
 openid_signin_desc = Enter your OpenID URI. For example: https://anne.me, bob.openid.org.cn or gnusocial.net/carry.
-disable_forgot_password_mail = Account recovery is disabled. Please contact your site administrator.
+disable_forgot_password_mail = Account recovery is disabled because no email is set up. Please contact your site administrator.
+disable_forgot_password_mail_admin = Account recovery is only available when email is set up. Please set up email to enable account recovery.
 email_domain_blacklisted = You cannot register with your email address.
 authorize_application = Authorize Application
 authorize_redirect_notice = You will be redirected to %s if you authorize this application.
@@ -312,7 +313,6 @@ authorize_application_description = If you grant the access, it will be able to
 authorize_title = Authorize "%s" to access your account?
 authorization_failed = Authorization failed
 authorization_failed_desc = The authorization failed because we detected an invalid request. Please contact the maintainer of the app you've tried to authorize.
-disable_forgot_password_mail = Account recovery is disabled. Please contact your site administrator.
 sspi_auth_failed = SSPI authentication failed
 password_pwned = The password you chose is on a <a target="_blank" rel="noopener noreferrer" href="https://haveibeenpwned.com/Passwords">list of stolen passwords</a> previously exposed in public data breaches. Please try again with a different password.
 password_pwned_err = Could not complete request to HaveIBeenPwned
diff --git a/routers/web/user/auth.go b/routers/web/user/auth.go
index 827b7cdef0..6b4beff0e0 100644
--- a/routers/web/user/auth.go
+++ b/routers/web/user/auth.go
@@ -1478,6 +1478,7 @@ func ForgotPasswd(ctx *context.Context) {
 	ctx.Data["Title"] = ctx.Tr("auth.forgot_password_title")
 
 	if setting.MailService == nil {
+		log.Warn(ctx.Tr("auth.disable_forgot_password_mail_admin"))
 		ctx.Data["IsResetDisable"] = true
 		ctx.HTML(http.StatusOK, tplForgotPassword)
 		return
diff --git a/templates/user/auth/forgot_passwd.tmpl b/templates/user/auth/forgot_passwd.tmpl
index 241deeed4a..2ff7acb97d 100644
--- a/templates/user/auth/forgot_passwd.tmpl
+++ b/templates/user/auth/forgot_passwd.tmpl
@@ -22,7 +22,13 @@
 							<button class="ui blue button">{{.i18n.Tr "auth.send_reset_mail"}}</button>
 						</div>
 					{{else if .IsResetDisable}}
-						<p class="center">{{.i18n.Tr "auth.disable_forgot_password_mail"}}</p>
+						<p class="center">
+							{{if $.IsAdmin}}
+								{{.i18n.Tr "auth.disable_forgot_password_mail_admin"}}
+							{{else}}
+								{{.i18n.Tr "auth.disable_forgot_password_mail"}}
+							{{end}}
+						</p>
 					{{else if .ResendLimited}}
 						<p class="center">{{.i18n.Tr "auth.resent_limit_prompt"}}</p>
 					{{end}}