#2954 use text/plain as default email content format

release/v1.15
Unknwon 2016-05-30 01:32:01 -07:00
parent d35a1c30f4
commit 8df3ba96f3
7 changed files with 259 additions and 251 deletions

View File

@ -3,7 +3,7 @@ Gogs - Go Git Service [![Build Status](https://travis-ci.org/gogits/gogs.svg?bra
![](https://github.com/gogits/gogs/blob/master/public/img/gogs-large-resize.png?raw=true) ![](https://github.com/gogits/gogs/blob/master/public/img/gogs-large-resize.png?raw=true)
##### Current version: 0.9.28 ##### Current version: 0.9.29
| Web | UI | Preview | | Web | UI | Preview |
|:-------------:|:-------:|:-------:| |:-------------:|:-------:|:-------:|

View File

@ -185,6 +185,8 @@ FROM =
; Mailer user name and password ; Mailer user name and password
USER = USER =
PASSWD = PASSWD =
; Use text/html as alternative format of content
ENABLE_HTML_ALTERNATIVE = false
[cache] [cache]
; Either "memory", "redis", or "memcache", default is "memory" ; Either "memory", "redis", or "memcache", default is "memory"

View File

@ -17,7 +17,7 @@ import (
"github.com/gogits/gogs/modules/setting" "github.com/gogits/gogs/modules/setting"
) )
const APP_VER = "0.9.28.0527" const APP_VER = "0.9.29.0530"
func init() { func init() {
runtime.GOMAXPROCS(runtime.NumCPU()) runtime.GOMAXPROCS(runtime.NumCPU())

File diff suppressed because one or more lines are too long

View File

@ -14,11 +14,11 @@ import (
"strings" "strings"
"time" "time"
"github.com/jaytaylor/html2text"
"gopkg.in/gomail.v2" "gopkg.in/gomail.v2"
"github.com/gogits/gogs/modules/log" "github.com/gogits/gogs/modules/log"
"github.com/gogits/gogs/modules/setting" "github.com/gogits/gogs/modules/setting"
"github.com/jaytaylor/html2text"
) )
type Message struct { type Message struct {
@ -27,20 +27,24 @@ type Message struct {
} }
// NewMessageFrom creates new mail message object with custom From header. // NewMessageFrom creates new mail message object with custom From header.
func NewMessageFrom(to []string, from, subject, htmlbody string) *Message { func NewMessageFrom(to []string, from, subject, htmlBody string) *Message {
msg := gomail.NewMessage() msg := gomail.NewMessage()
msg.SetHeader("From", from) msg.SetHeader("From", from)
msg.SetHeader("To", to...) msg.SetHeader("To", to...)
msg.SetHeader("Subject", subject) msg.SetHeader("Subject", subject)
msg.SetDateHeader("Date", time.Now()) msg.SetDateHeader("Date", time.Now())
body, err := html2text.FromString(htmlbody)
body, err := html2text.FromString(htmlBody)
if err != nil { if err != nil {
// TODO: report error ? log.Error(4, "html2text.FromString: %v", err)
msg.SetBody("text/html", htmlbody) msg.SetBody("text/html", htmlBody)
msg.AddAlternative("text/html", htmlBody)
} else { } else {
msg.SetBody("text/plain", body) msg.SetBody("text/plain", body)
// TODO: avoid this (use a configuration switch?) }
msg.AddAlternative("text/html", htmlbody)
if setting.MailService.EnableHTMLAlternative {
msg.AddAlternative("text/html", htmlBody)
} }
return &Message{ return &Message{

View File

@ -612,16 +612,17 @@ func newSessionService() {
// Mailer represents mail service. // Mailer represents mail service.
type Mailer struct { type Mailer struct {
QueueLength int QueueLength int
Name string Name string
Host string Host string
From string From string
User, Passwd string User, Passwd string
DisableHelo bool DisableHelo bool
HeloHostname string HeloHostname string
SkipVerify bool SkipVerify bool
UseCertificate bool UseCertificate bool
CertFile, KeyFile string CertFile, KeyFile string
EnableHTMLAlternative bool
} }
var ( var (
@ -636,17 +637,18 @@ func newMailService() {
} }
MailService = &Mailer{ MailService = &Mailer{
QueueLength: sec.Key("SEND_BUFFER_LEN").MustInt(100), QueueLength: sec.Key("SEND_BUFFER_LEN").MustInt(100),
Name: sec.Key("NAME").MustString(AppName), Name: sec.Key("NAME").MustString(AppName),
Host: sec.Key("HOST").String(), Host: sec.Key("HOST").String(),
User: sec.Key("USER").String(), User: sec.Key("USER").String(),
Passwd: sec.Key("PASSWD").String(), Passwd: sec.Key("PASSWD").String(),
DisableHelo: sec.Key("DISABLE_HELO").MustBool(), DisableHelo: sec.Key("DISABLE_HELO").MustBool(),
HeloHostname: sec.Key("HELO_HOSTNAME").String(), HeloHostname: sec.Key("HELO_HOSTNAME").String(),
SkipVerify: sec.Key("SKIP_VERIFY").MustBool(), SkipVerify: sec.Key("SKIP_VERIFY").MustBool(),
UseCertificate: sec.Key("USE_CERTIFICATE").MustBool(), UseCertificate: sec.Key("USE_CERTIFICATE").MustBool(),
CertFile: sec.Key("CERT_FILE").String(), CertFile: sec.Key("CERT_FILE").String(),
KeyFile: sec.Key("KEY_FILE").String(), KeyFile: sec.Key("KEY_FILE").String(),
EnableHTMLAlternative: sec.Key("ENABLE_HTML_ALTERNATIVE").MustBool(),
} }
MailService.From = sec.Key("FROM").MustString(MailService.User) MailService.From = sec.Key("FROM").MustString(MailService.User)
log.Info("Mail Service Enabled") log.Info("Mail Service Enabled")

View File

@ -1 +1 @@
0.9.28.0527 0.9.29.0530