Go,Appengine,SMTP,Gmail

时间:2016-12-08 22:36:24

标签: google-app-engine go smtp

出于某种原因,我无法弄清楚如何使用Gmail帐户,Appengine和Golang发送电子邮件。

这就是我所做的:

我访问了Google云端平台> Appengine>设置>选择Project,我在Email API授权发件人上添加了gmail帐户。

我尝试使用(https://golang.org/pkg/net/smtp/#pkg-examples)中的代码(func SendMail)来完成这项工作

package main

import (

    "log"
    "net/smtp"
)

func main() {

    // Set up authentication information.
    auth := smtp.PlainAuth("", "user@gmail.com", "password", "smtp.gmail.com")

    // Connect to the server, authenticate, set the sender and recipient,
    // and send the email all in one step.
    to := []string{"recipient@example.net"}
    msg := []byte("To: recipient@example.net\r\n" +
        "Subject: discount Gophers!\r\n" +
        "\r\n" +
        "This is the email body.\r\n")
    err := smtp.SendMail(smtp.gmail.com:587", auth, "sender@example.org", to, msg)
    if err != nil {
        log.Fatal(err)
    }
}

在前端(JavaScript)上,我尝试运行此代码后得到一个不成功的响应。

我一直在appengine登台服务器上运行它

我尝试了不同的smtp服务器,端口和用户,但它仍无效(support.google.com/a/answer/176600?hl=en)

我在github和其他一些博客上找到了一些例子,我尝试了它们,但它并没有与众不同。 github.com/golang/go/wiki/SendingMail

nathanleclaire.com/blog/2013/12/17/sending-email-from-gmail-using-golang /

在所有的例子中,一切都看起来很直接,但有一些我肯定会遗漏或误解。

1 个答案:

答案 0 :(得分:0)

在GAE上建立原始tcp连接有一些限制: https://cloud.google.com/appengine/docs/go/sockets/#limitations_and_restrictions

我建议使用GAE mail api(与标准smtp软件包略有不同)来发送电子邮件: https://cloud.google.com/appengine/docs/go/mail/sending-receiving-with-mail-api