浏览代码

feat(notifications): removes html escaping subject

closes #6905
bergquist 9 年之前
父节点
当前提交
c467e48940

+ 1 - 0
pkg/models/notifications.go

@@ -7,6 +7,7 @@ var ErrInvalidEmailCode = errors.New("Invalid or expired email code")
 type SendEmailCommand struct {
 	To           []string
 	Template     string
+	Subject      string
 	Data         map[string]interface{}
 	Info         string
 	EmbededFiles []string

+ 1 - 0
pkg/services/alerting/notifiers/email.go

@@ -57,6 +57,7 @@ func (this *EmailNotifier) Notify(evalContext *alerting.EvalContext) error {
 
 	cmd := &m.SendEmailCommandSync{
 		SendEmailCommand: m.SendEmailCommand{
+			Subject: evalContext.GetNotificationTitle(),
 			Data: map[string]interface{}{
 				"Title":        evalContext.GetNotificationTitle(),
 				"State":        evalContext.Rule.State,

+ 20 - 15
pkg/services/notifications/mailer.go

@@ -111,7 +111,6 @@ func buildEmailMessage(cmd *m.SendEmailCommand) (*Message, error) {
 
 	var buffer bytes.Buffer
 	var err error
-	var subjectText interface{}
 
 	data := cmd.Data
 	if data == nil {
@@ -124,28 +123,34 @@ func buildEmailMessage(cmd *m.SendEmailCommand) (*Message, error) {
 		return nil, err
 	}
 
-	subjectData := data["Subject"].(map[string]interface{})
-	subjectText, hasSubject := subjectData["value"]
+	subject := cmd.Subject
+	if cmd.Subject == "" {
+		var subjectText interface{}
+		subjectData := data["Subject"].(map[string]interface{})
+		subjectText, hasSubject := subjectData["value"]
 
-	if !hasSubject {
-		return nil, errors.New(fmt.Sprintf("Missing subject in Template %s", cmd.Template))
-	}
+		if !hasSubject {
+			return nil, errors.New(fmt.Sprintf("Missing subject in Template %s", cmd.Template))
+		}
 
-	subjectTmpl, err := template.New("subject").Parse(subjectText.(string))
-	if err != nil {
-		return nil, err
-	}
+		subjectTmpl, err := template.New("subject").Parse(subjectText.(string))
+		if err != nil {
+			return nil, err
+		}
 
-	var subjectBuffer bytes.Buffer
-	err = subjectTmpl.ExecuteTemplate(&subjectBuffer, "subject", data)
-	if err != nil {
-		return nil, err
+		var subjectBuffer bytes.Buffer
+		err = subjectTmpl.ExecuteTemplate(&subjectBuffer, "subject", data)
+		if err != nil {
+			return nil, err
+		}
+
+		subject = subjectBuffer.String()
 	}
 
 	return &Message{
 		To:           cmd.To,
 		From:         setting.Smtp.FromAddress,
-		Subject:      subjectBuffer.String(),
+		Subject:      subject,
 		Body:         buffer.String(),
 		EmbededFiles: cmd.EmbededFiles,
 	}, nil

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

@@ -80,6 +80,7 @@ func sendEmailCommandHandlerSync(ctx context.Context, cmd *m.SendEmailCommandSyn
 		Template:     cmd.Template,
 		To:           cmd.To,
 		EmbededFiles: cmd.EmbededFiles,
+		Subject:      cmd.Subject,
 	})
 
 	if err != nil {