无法通过Gmail发送电子邮件

时间:2016-12-19 13:34:30

标签: email gmail

我有一个应该通过Gmail发送电子邮件的联系页面。

以下是代码:

func sendContactEmail(subject string, email string, message string)  {

    auth := smtp.PlainAuth(
        "contact form submit",
        "myaccount@gmail.com",
        "mypassword",
        "smtp.gmail.com",
    )
    // Connect to the server, authenticate, set the sender and recipient,
    // and send the email all in one step.


    body := subject + "\r\n" + email  +"\r\n" + message

    msg := "Subject: Contact us" + "\r\n\r\n" + body + "\r\n"

    err := smtp.SendMail(
        "smtp.gmail.com:587",
        auth,
        "activation@mysite.org",
        []string{"myaccount@gmail.com"},        
        []byte(msg),
    )
    if err != nil {
        log.Fatal(err)
    }
    return
}

func ContactPOST(w http.ResponseWriter, r *http.Request) {

    // Get form values
    subject := r.FormValue("subject")   
    email := r.FormValue("email")
    message := r.FormValue("message")
    go sendContactEmail(subject, email, message)
    // Display the thank you page
    v := view.New(r)
    v.Name = "contact/thanks"
    v.Render(w)
    return 
}

以下是错误消息:

contact.go:41: 534 5.7.14 <https://accounts.google.com/signin/continue?sarp=1&scc=1&plt=AKgnsbti
5.7.14 HcGWI2H6QjVTNjHS4X49PcBxQQGNhL9TKnzdQxqYgeUXkWxpHj90RSAaIbI-ySSrKFTV4q
5.7.14 IVZeXExVeqhuZnPhtvUtx9p5Ly7gBxwFLzrrgWcm4NZ3_vhDOWiH-uDsPb5eoa4rbYCepd
5.7.14 PlD9kBBz1dAlhdRDJ7mwqsUMJUV7MHTgNWqTcT_R89Uq9oYtwurtmGAuv2YAkPTCBtPwXq
5.7.14 9ooL5edn_sTI6WJW72sK2ilMCIUB0> Please log in via your web browser and
5.7.14 then try again.
5.7.14  Learn more at
5.7.14  https://support.google.com/mail/answer/78754 63sm17219759wmg.2 - gsmtp

奇怪的是,当我在我的开发机器上发送电子邮件时,表单工作正常,只有当应用程序部署在显示thank you页面后http服务器刚刚死亡的VPS上时才会出现错误。

我也试过在没有goroutine的情况下调用sendContactEmail但仍然得到同样的错误。

感谢您解决此问题的提示。

1 个答案:

答案 0 :(得分:1)

我的组织遇到了类似的问题。我们必须在gmail上登录我们的管理员电子邮件控制台并为我们的IP打开smtp中继访问,因此不再需要Web身份验证。请看这里寻求帮助。

https://support.google.com/a/answer/2956491?hl=en

也理解澄清。您完全正确,对于个人帐户,您可以转到该链接(https://accounts.google.com/DisplayUnlockCaptcha)并能够通过邮件中继授予合适的身份验证。