Browse Source

Added support for templated email subjects

Torkel Ödegaard 10 years ago
parent
commit
9b12350855

+ 13 - 1
pkg/services/notifications/notifications.go

@@ -68,10 +68,22 @@ func sendEmailCommandHandler(cmd *m.SendEmailCommand) error {
 	setDefaultTemplateData(data, nil)
 	mailTemplates.ExecuteTemplate(&buffer, cmd.Template, data)
 
+	subjectTmplText := data["Subject"].(map[string]interface{})["value"].(string)
+	subjectTmpl, err := template.New("subject").Parse(subjectTmplText)
+	if err != nil {
+		return err
+	}
+
+	var subjectBuffer bytes.Buffer
+	err = subjectTmpl.ExecuteTemplate(&subjectBuffer, "subject", data)
+	if err != nil {
+		return err
+	}
+
 	addToMailQueue(&Message{
 		To:      cmd.To,
 		From:    setting.Smtp.FromAddress,
-		Subject: data["Subject"].(map[string]interface{})["value"].(string),
+		Subject: subjectBuffer.String(),
 		Body:    buffer.String(),
 	})
 

+ 1 - 1
pkg/services/notifications/notifications_test.go

@@ -31,7 +31,7 @@ func TestNotifications(t *testing.T) {
 			err := sendResetPasswordEmail(&m.SendResetPasswordEmailCommand{User: &m.User{Email: "asd@asd.com"}})
 			So(err, ShouldBeNil)
 			So(sentMsg.Body, ShouldContainSubstring, "body")
-			So(sentMsg.Subject, ShouldEqual, "Reset your Grafana password")
+			So(sentMsg.Subject, ShouldEqual, "Reset your Grafana password asd@asd.com")
 			So(sentMsg.Body, ShouldNotContainSubstring, "Subject")
 		})
 	})

+ 1 - 1
public/emails/reset_password.html

@@ -1,4 +1,4 @@
-{{Subject .Subject "Reset your Grafana password"}}
+{{Subject .Subject "Reset your Grafana password - {{.Name}}"}}
 
 <!DOCTYPE html>
 <html>