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....