golang net/smtp SMTP AUTH LOGIN Auth Handler
// MIT license (c) andelf 2013 | |
import ( | |
"net/smtp" | |
"errors" | |
) | |
type loginAuth struct { | |
username, password string | |
} | |
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 | |
} | |
// usage: | |
// auth := LoginAuth("loginname", "password") | |
// err := smtp.SendMail(smtpServer + ":25", auth, fromAddress, toAddresses, []byte(message)) | |
// or | |
// client, err := smtp.Dial(smtpServer) | |
// client.Auth(LoginAuth("loginname", "password")) |
This comment has been minimized.
This comment has been minimized.
Extremely grateful to see that this was the answer to all my problems. Thank you very very much...! |
This comment has been minimized.
This comment has been minimized.
Such a simple fix. Can't believe the standard library doesn't support LOGIN. |
This comment has been minimized.
This comment has been minimized.
This worked for me using: Thank you for posting. |
This comment has been minimized.
This comment has been minimized.
thx dude! |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This comment has been minimized.
Very useful, thanks! I've updated the code to submit the username when
Start
is called, which means one less network exchange.