Go – smtp error: 535 5.7.8 Username and Password not accepted for gmail in go

emailgmailgo

I'm trying to test an app's outgoing emails from localhost using this function:

func SendContactUsForm(subject, email, body string) error {
    var err error
    from := "mysender@gmail.com"
    pass := "somecrazypw"
    to := "mydestination@gmail.com"
    msg := "From: " + from + "\n" +
    "To: " + to + "\n" +
    "Subject: Contact form:" + subject + "\n" + body
    err = smtp.SendMail("smtp.gmail.com:587",
        smtp.PlainAuth("", from, pass, "smtp.gmail.com"),
        from, []string{to}, []byte(msg))
    if err != nil {
        log.Printf("smtp error: %s", err)
        return err
    }
    return nil
}

But I get this error:

send_emails.go:171: smtp error: 535 5.7.8 Username and Password not
accepted. Learn more at
5.7.8 https://support.google.com/mail/?p=BadCredentials a7sm5381413wmh.14 – gsmtp contact.go:38: error seding contact us form
535 5.7.8 Username and Password not accepted.

Despite the fact that the credentials of mysender@gmail.com are correct and I have enabled Allow less secure apps on mysender@gmail.com.

So what could be wrong here? And how can I fix it?

Best Answer

Go to Security inside your gmail account and enable 3party APP access... This will fix the problem. FYI, I believe this wont work if you have 2-step auth turned on. So you may have to create a new gmail account and then enable forwarding....

Related Topic