Merge pull request #766 from phsmit/correct_from

Correct usage of FROM in email creation
This commit is contained in:
无闻 2014-12-21 01:55:28 -05:00
commit 030b3d751e
3 changed files with 12 additions and 11 deletions

View file

@ -98,7 +98,7 @@ SUBJECT = %(APP_NAME)s
HOST = HOST =
; Do not verify the certificate of the server. Only use this for self-signed certificates ; Do not verify the certificate of the server. Only use this for self-signed certificates
SKIP_VERIFY = SKIP_VERIFY =
; Mail from address ; Mail from address, RFC 5322. This can be just an email address, or the "Name" <email@example.com> format
FROM = FROM =
; Mailer user name and password ; Mailer user name and password
USER = USER =

View file

@ -31,9 +31,7 @@ const (
// Create New mail message use MailFrom and MailUser // Create New mail message use MailFrom and MailUser
func NewMailMessageFrom(To []string, from, subject, body string) Message { func NewMailMessageFrom(To []string, from, subject, body string) Message {
msg := NewHtmlMessage(To, from, subject, body) return NewHtmlMessage(To, from, subject, body)
msg.User = setting.MailService.User
return msg
} }
// Create New mail message use MailFrom and MailUser // Create New mail message use MailFrom and MailUser

View file

@ -8,6 +8,7 @@ import (
"crypto/tls" "crypto/tls"
"fmt" "fmt"
"net" "net"
"net/mail"
"net/smtp" "net/smtp"
"strings" "strings"
@ -20,7 +21,6 @@ type Message struct {
From string From string
Subject string Subject string
Body string Body string
User string
Type string Type string
Massive bool Massive bool
Info string Info string
@ -35,8 +35,7 @@ func (m Message) Content() string {
} }
// create mail content // create mail content
content := "From: \"" + m.From + "\" <" + m.User + content := "From: " + m.From + "\r\nSubject: " + m.Subject + "\r\nContent-Type: " + contentType + "\r\n\r\n" + m.Body
">\r\nSubject: " + m.Subject + "\r\nContent-Type: " + contentType + "\r\n\r\n" + m.Body
return content return content
} }
@ -67,7 +66,7 @@ func processMailQueue() {
} }
// sendMail allows mail with self-signed certificates. // sendMail allows mail with self-signed certificates.
func sendMail(settings *setting.Mailer, from string, recipients []string, msgContent []byte) error { func sendMail(settings *setting.Mailer, recipients []string, msgContent []byte) error {
host, port, err := net.SplitHostPort(settings.Host) host, port, err := net.SplitHostPort(settings.Host)
if err != nil { if err != nil {
return err return err
@ -122,8 +121,12 @@ func sendMail(settings *setting.Mailer, from string, recipients []string, msgCon
} }
} }
if err = client.Mail(from); err != nil { if fromAddress, err := mail.ParseAddress(settings.From); err != nil {
return err return err
} else {
if err = client.Mail(fromAddress.Address); err != nil {
return err
}
} }
for _, rec := range recipients { for _, rec := range recipients {
@ -165,7 +168,7 @@ func Send(msg *Message) (int, error) {
num := 0 num := 0
for _, to := range msg.To { for _, to := range msg.To {
body := []byte("To: " + to + "\r\n" + content) body := []byte("To: " + to + "\r\n" + content)
err := sendMail(setting.MailService, msg.From, []string{to}, body) err := sendMail(setting.MailService, []string{to}, body)
if err != nil { if err != nil {
return num, err return num, err
} }
@ -176,7 +179,7 @@ func Send(msg *Message) (int, error) {
body := []byte("To: " + strings.Join(msg.To, ";") + "\r\n" + content) body := []byte("To: " + strings.Join(msg.To, ";") + "\r\n" + content)
// send to multiple emails in one message // send to multiple emails in one message
err := sendMail(setting.MailService, msg.From, msg.To, body) err := sendMail(setting.MailService, msg.To, body)
if err != nil { if err != nil {
return 0, err return 0, err
} else { } else {