From fa3329271db641bcf2eb6b8582d176e28ddef863 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torkel=20=C3=96degaard?= Date: Tue, 8 Sep 2015 10:49:35 +0200 Subject: [PATCH] fix(email notifications): added error handling to email template parsing, fixes #2690 --- pkg/services/notifications/notifications.go | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/pkg/services/notifications/notifications.go b/pkg/services/notifications/notifications.go index 5857ee5247d..63ce7219618 100644 --- a/pkg/services/notifications/notifications.go +++ b/pkg/services/notifications/notifications.go @@ -64,16 +64,28 @@ func sendEmailCommandHandler(cmd *m.SendEmailCommand) error { } var buffer bytes.Buffer + var err error + var subjectText interface{} + data := cmd.Data if data == nil { data = make(map[string]interface{}, 10) } setDefaultTemplateData(data, nil) - mailTemplates.ExecuteTemplate(&buffer, cmd.Template, data) + err = mailTemplates.ExecuteTemplate(&buffer, cmd.Template, data) + if err != nil { + return err + } - subjectTmplText := data["Subject"].(map[string]interface{})["value"].(string) - subjectTmpl, err := template.New("subject").Parse(subjectTmplText) + subjectData := data["Subject"].(map[string]interface{}) + subjectText, hasSubject := subjectData["value"] + + if !hasSubject { + return errors.New(fmt.Sprintf("Missing subject in Template %s", cmd.Template)) + } + + subjectTmpl, err := template.New("subject").Parse(subjectText.(string)) if err != nil { return err }