Merge pull request #1517 from haoyixin/master
Added supported of 'AUTH LOGIN'
This commit is contained in:
commit
9b01a3501b
1 changed files with 31 additions and 1 deletions
|
@ -12,11 +12,38 @@ import (
|
|||
"net/smtp"
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
"errors"
|
||||
"github.com/gogits/gogs/modules/log"
|
||||
"github.com/gogits/gogs/modules/setting"
|
||||
)
|
||||
|
||||
type loginAuth struct {
|
||||
username, password string
|
||||
}
|
||||
|
||||
//SMTP AUTH LOGIN Auth Handler
|
||||
func LoginAuth(username, password string) smtp.Auth {
|
||||
return &loginAuth{username, password}
|
||||
}
|
||||
|
||||
func (a *loginAuth) Start(server *smtp.ServerInfo) (string, []byte, error) {
|
||||
return "LOGIN", []byte{}, nil
|
||||
}
|
||||
|
||||
func (a *loginAuth) Next(fromServer []byte, more bool) ([]byte, error) {
|
||||
if more {
|
||||
switch string(fromServer) {
|
||||
case "Username:":
|
||||
return []byte(a.username), nil
|
||||
case "Password:":
|
||||
return []byte(a.password), nil
|
||||
default:
|
||||
return nil, errors.New("Unkown fromServer")
|
||||
}
|
||||
}
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
type Message struct {
|
||||
To []string
|
||||
From string
|
||||
|
@ -135,6 +162,9 @@ func sendMail(settings *setting.Mailer, recipients []string, msgContent []byte)
|
|||
auth = smtp.CRAMMD5Auth(settings.User, settings.Passwd)
|
||||
} else if strings.Contains(options, "PLAIN") {
|
||||
auth = smtp.PlainAuth("", settings.User, settings.Passwd, host)
|
||||
//Patch for AUTH LOGIN
|
||||
} else if strings.Contains(options, "LOGIN") {
|
||||
auth = LoginAuth(settings.User, settings.Passwd)
|
||||
}
|
||||
|
||||
if auth != nil {
|
||||
|
|
Reference in a new issue