我正在使用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
}
我希望从此邮件服务中收到一条消息
答案 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列入白名单。