From 66bc0ac251f564491ed0a6d5d4cfa0a11af09303 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Saurel?= Date: Thu, 21 Sep 2017 06:29:45 +0200 Subject: [PATCH] Fix sending mail with a non-latin display name. #2102 (#2559) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fix sending mail with a non-latin display name. #2102 Signed-off-by: Rémi Saurel * Take into account the possibility that setting.MailService.From is in `name ` format. #2102 Signed-off-by: Rémi Saurel --- models/mail.go | 2 +- modules/mailer/mailer.go | 6 +++--- modules/setting/setting.go | 2 ++ 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/models/mail.go b/models/mail.go index b7d24a06a1..afcddb6d23 100644 --- a/models/mail.go +++ b/models/mail.go @@ -167,7 +167,7 @@ func composeIssueCommentMessage(issue *Issue, doer *User, comment *Comment, tplN log.Error(3, "Template: %v", err) } - msg := mailer.NewMessageFrom(tos, fmt.Sprintf(`"%s" <%s>`, doer.DisplayName(), setting.MailService.FromEmail), subject, content.String()) + msg := mailer.NewMessageFrom(tos, doer.DisplayName(), setting.MailService.FromEmail, subject, content.String()) msg.Info = fmt.Sprintf("Subject: %s, %s", subject, info) return msg } diff --git a/modules/mailer/mailer.go b/modules/mailer/mailer.go index 5b28f92c47..0bb78de92a 100644 --- a/modules/mailer/mailer.go +++ b/modules/mailer/mailer.go @@ -31,11 +31,11 @@ type Message struct { } // NewMessageFrom creates new mail message object with custom From header. -func NewMessageFrom(to []string, from, subject, body string) *Message { +func NewMessageFrom(to []string, fromDisplayName, fromAddress, subject, body string) *Message { log.Trace("NewMessageFrom (body):\n%s", body) msg := gomail.NewMessage() - msg.SetHeader("From", from) + msg.SetAddressHeader("From", fromAddress, fromDisplayName) msg.SetHeader("To", to...) msg.SetHeader("Subject", subject) msg.SetDateHeader("Date", time.Now()) @@ -58,7 +58,7 @@ func NewMessageFrom(to []string, from, subject, body string) *Message { // NewMessage creates new mail message object with default From header. func NewMessage(to []string, subject, body string) *Message { - return NewMessageFrom(to, setting.MailService.From, subject, body) + return NewMessageFrom(to, setting.MailService.FromName, setting.MailService.FromEmail, subject, body) } type loginAuth struct { diff --git a/modules/setting/setting.go b/modules/setting/setting.go index 4932f51a68..f594125503 100644 --- a/modules/setting/setting.go +++ b/modules/setting/setting.go @@ -1287,6 +1287,7 @@ type Mailer struct { QueueLength int Name string From string + FromName string FromEmail string SendAsPlainText bool @@ -1345,6 +1346,7 @@ func newMailService() { if err != nil { log.Fatal(4, "Invalid mailer.FROM (%s): %v", MailService.From, err) } + MailService.FromName = parsed.Name MailService.FromEmail = parsed.Address log.Info("Mail Service Enabled")