为什么我不能从我的应用发送一封邮件,该邮件在GCP中托管使用​​Gmail SMTP?

时间:2019-04-11 05:37:46

标签: go google-cloud-platform smtp gmail

我正在使用golang开发邮件服务,并将其放在google cloud上使用,当我的应用托管在gcp中时,我的应用无法发送电子邮件,但是我可以在本地进行。

我以前在localhost尝试过,发送过电子邮件后成功了,但是当我在gcp上运行它时,它什么也没发送,日志很清楚,除了成功日志以外,没有其他关于错误的信息。我应该在gcp中进行配置吗?

这是我发送电子邮件的代码:

func (r *Request) SendEmail() (bool, error) {
    mime := "MIME-version: 1.0;\nContent-Type: text/html;
    charset = \"UTF-8\";\n\n"
    subject := "Subject: " + r.subject + "!\n"
    msg := []byte(subject + mime + "\n" + r.body)
    addr := "smtp.gmail.com:587"

    if err := smtp.SendMail(addr, auth, "no-reply@sample.com", r.to, msg); err != nil {
        return false, err
    }

    return true, nil
}

我希望从此邮件服务中收到一条消息

1 个答案:

答案 0 :(得分:0)

您实际上是从no-reply@sample.com发送电子邮件吗?假设上述代码有效,那么Gmail的反垃圾邮件过滤器将吸引您。

sample.com没有任何TXT(例如,用于SPF)或MX记录,并且您的GCE实例肯定不会受到青睐:

$ host -t txt sample.com.
sample.com has no TXT record

$ host -t mx sample.com.
sample.com has no MX record

如果它确实可以正常工作,最好是在垃圾邮件文件夹中。

如果您为上述代码段编辑了上述电子邮件,并且实际上是从您所拥有的域发送邮件,请确保您的MX,SPF和DMARC记录符合要求。特别是,您的SPF记录必须将GCE实例的IP列入白名单。