From af03d00780a6ee70c58e135c6679542cde4f8d50 Mon Sep 17 00:00:00 2001
From: Sandro Santilli <strk@kbt.io>
Date: Wed, 7 Sep 2016 11:19:44 +0200
Subject: [PATCH] Fix sender of issue notifications

It is the FROM field in mailer configuration that needs be used,
not the USER field, which is for authentication.

Closes https://github.com/gogits/gogs/issues/3615
---
 models/mail.go             | 2 +-
 modules/setting/setting.go | 9 +++++++++
 2 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/models/mail.go b/models/mail.go
index 0db21355a8..85f1560b44 100644
--- a/models/mail.go
+++ b/models/mail.go
@@ -160,7 +160,7 @@ func composeIssueMessage(issue *Issue, doer *User, tplName base.TplName, tos []s
 	if err != nil {
 		log.Error(3, "HTMLString (%s): %v", tplName, err)
 	}
-	msg := mailer.NewMessageFrom(tos, fmt.Sprintf(`"%s" <%s>`, doer.DisplayName(), setting.MailService.User), subject, content)
+	msg := mailer.NewMessageFrom(tos, fmt.Sprintf(`"%s" <%s>`, doer.DisplayName(), setting.MailService.FromEmail), subject, content)
 	msg.Info = fmt.Sprintf("Subject: %s, %s", subject, info)
 	return msg
 }
diff --git a/modules/setting/setting.go b/modules/setting/setting.go
index b3a932e91c..7696c09127 100644
--- a/modules/setting/setting.go
+++ b/modules/setting/setting.go
@@ -6,6 +6,7 @@ package setting
 
 import (
 	"fmt"
+	"net/mail"
 	"net/url"
 	"os"
 	"os/exec"
@@ -714,6 +715,7 @@ type Mailer struct {
 	Name                  string
 	Host                  string
 	From                  string
+	FromEmail             string
 	User, Passwd          string
 	DisableHelo           bool
 	HeloHostname          string
@@ -749,6 +751,13 @@ func newMailService() {
 		EnableHTMLAlternative: sec.Key("ENABLE_HTML_ALTERNATIVE").MustBool(),
 	}
 	MailService.From = sec.Key("FROM").MustString(MailService.User)
+
+	parsed, err := mail.ParseAddress(MailService.From)
+	if err != nil {
+		log.Fatal(4, "Invalid mailer.FROM (%s): %v", MailService.From, err)
+	}
+	MailService.FromEmail = parsed.Address
+
 	log.Info("Mail Service Enabled")
 }