Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

Tags:

email

go

gmail

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 := "[email protected]"
    pass := "somecrazypw"
    to := "[email protected]"
    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 [email protected] are correct and I have enabled Allow less secure apps on [email protected].

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

like image 699
Milkyway Avatar asked Mar 03 '23 08:03

Milkyway


1 Answers

Generate a password from https://security.google.com/settings/security/apppasswords and use that password instead.

An App Password is a 16-digit passcode that gives an app or device restricted access to your Google Account without having to divulge your personal password and complete access to your Google Account.

More details on how to generate one!

like image 158
shmsr Avatar answered Mar 05 '23 15:03

shmsr