浏览代码

fix(email notifications): added error handling to email template parsing, fixes #2690

Torkel Ödegaard 10 年之前
父节点
当前提交
fa3329271d
共有 1 个文件被更改,包括 15 次插入3 次删除
  1. 15 3
      pkg/services/notifications/notifications.go

+ 15 - 3
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
+	}
+
+	subjectData := data["Subject"].(map[string]interface{})
+	subjectText, hasSubject := subjectData["value"]
+
+	if !hasSubject {
+		return errors.New(fmt.Sprintf("Missing subject in Template %s", cmd.Template))
+	}
 
-	subjectTmplText := data["Subject"].(map[string]interface{})["value"].(string)
-	subjectTmpl, err := template.New("subject").Parse(subjectTmplText)
+	subjectTmpl, err := template.New("subject").Parse(subjectText.(string))
 	if err != nil {
 		return err
 	}