Skip to content

Instantly share code, notes, and snippets.

@shamimevatix
Last active May 5, 2017 10:26
Show Gist options
  • Save shamimevatix/600144730b4afa11350ade01acd27d56 to your computer and use it in GitHub Desktop.
Save shamimevatix/600144730b4afa11350ade01acd27d56 to your computer and use it in GitHub Desktop.
Golang gmail smtp authentication
package main
import (
"log"
"net/smtp"
"strconv"
"crypto/tls"
)
func ValidateSMTPServer(port int, serverHost, securityType, username, password string) error {
// Connect to server
serverAddress := serverHost + ":" + strconv.Itoa(port)
log.Println(serverAddress)
smtpClient, err := smtp.Dial(serverAddress)
if err != nil {
return err
}
defer smtpClient.Close()
log.Println("Dialed")
if ok, _ := smtpClient.Extension("STARTTLS"); ok {
config := &tls.Config{ServerName: serverHost}
if err = smtpClient.StartTLS(config); err != nil {
return err
}
}
log.Println("STARTTL Done")
auth := smtp.PlainAuth("", username, password, serverHost)
if err = smtpClient.Auth(auth); err != nil {
return err
}
return nil
}
func main() {
log.Println("starting smtp authentication")
err := ValidateSMTPServer(587, "smtp.gmail.com", "SSL", "example@gmail.com", "password");
log.Println(err)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment