我正在使用golang开发一个邮件服务,我把它放在谷歌云服务上,我的应用程序在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, "[email protected]", r.to, msg); err != nil {
return false, err
}
return true, nil
}
我希望从这个邮件服务收到一个消息
你实际上是从[email protected]
发送电子邮件吗?假设上述代码有效,那么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列入白名单。