diff --git a/src/main/scala/app/SystemSettingsController.scala b/src/main/scala/app/SystemSettingsController.scala index 968875b..9466a83 100644 --- a/src/main/scala/app/SystemSettingsController.scala +++ b/src/main/scala/app/SystemSettingsController.scala @@ -21,7 +21,9 @@ "port" -> trim(label("SMTP Port", optional(number()))), "user" -> trim(label("SMTP User", optional(text()))), "password" -> trim(label("SMTP Password", optional(text()))), - "ssl" -> trim(label("Enable SSL", optional(boolean()))) + "ssl" -> trim(label("Enable SSL", optional(boolean()))), + "fromAddress" -> trim(label("FROM Address", optional(text()))), + "fromName" -> trim(label("FROM Name", optional(text()))) )(Smtp.apply)), "ldapAuthentication" -> trim(label("LDAP", boolean())), "ldap" -> optionalIfNotChecked("ldapAuthentication", mapping( diff --git a/src/main/scala/service/SystemSettingsService.scala b/src/main/scala/service/SystemSettingsService.scala index 39e1e5f..5ed9eb3 100644 --- a/src/main/scala/service/SystemSettingsService.scala +++ b/src/main/scala/service/SystemSettingsService.scala @@ -18,6 +18,8 @@ smtp.user.foreach(props.setProperty(SmtpUser, _)) smtp.password.foreach(props.setProperty(SmtpPassword, _)) smtp.ssl.foreach(x => props.setProperty(SmtpSsl, x.toString)) + smtp.fromAddress.foreach(props.setProperty(SmtpFromAddress, _)) + smtp.fromName.foreach(props.setProperty(SmtpFromName, _)) } } props.setProperty(LdapAuthentication, settings.ldapAuthentication.toString) @@ -52,7 +54,9 @@ getOptionValue(props, SmtpPort, Some(DefaultSmtpPort)), getOptionValue(props, SmtpUser, None), getOptionValue(props, SmtpPassword, None), - getOptionValue[Boolean](props, SmtpSsl, None))) + getOptionValue[Boolean](props, SmtpSsl, None), + getOptionValue(props, SmtpFromAddress, None), + getOptionValue(props, SmtpFromName, None))) } else { None }, @@ -100,7 +104,9 @@ port: Option[Int], user: Option[String], password: Option[String], - ssl: Option[Boolean]) + ssl: Option[Boolean], + fromAddress: Option[String], + fromName: Option[String]) val DefaultSmtpPort = 25 val DefaultLdapPort = 389 @@ -113,6 +119,8 @@ private val SmtpUser = "smtp.user" private val SmtpPassword = "smtp.password" private val SmtpSsl = "smtp.ssl" + private val SmtpFromAddress = "smtp.from_address" + private val SmtpFromName = "smtp.from_name" private val LdapAuthentication = "ldap_authentication" private val LdapHost = "ldap.host" private val LdapPort = "ldap.port" diff --git a/src/main/scala/util/Notifier.scala b/src/main/scala/util/Notifier.scala index 15acb35..4fc4652 100644 --- a/src/main/scala/util/Notifier.scala +++ b/src/main/scala/util/Notifier.scala @@ -77,7 +77,12 @@ smtp.ssl.foreach { ssl => email.setSSLOnConnect(ssl) } - email.setFrom("notifications@gitbucket.com", context.loginAccount.get.userName) + smtp.fromAddress + .map (_ -> smtp.fromName.orNull) + .orElse (Some("notifications@gitbucket.com" -> context.loginAccount.get.userName)) + .foreach { case (address, name) => + email.setFrom(address, name) + } email.setHtmlMsg(msg(view.Markdown.toHtml(content, r, false, true))) // TODO Can we use the Database Session in other than Transaction Filter? diff --git a/src/main/twirl/admin/system.scala.html b/src/main/twirl/admin/system.scala.html index df79fdb..361138d 100644 --- a/src/main/twirl/admin/system.scala.html +++ b/src/main/twirl/admin/system.scala.html @@ -140,6 +140,18 @@ +