为什么我无法从我在GCP中托管的应用使用Gmail SMTP发送电子邮件?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么我无法从我在GCP中托管的应用使用Gmail SMTP发送电子邮件?相关的知识,希望对你有一定的参考价值。

我正在使用golang开发一个邮件服务,我把它放在谷歌云服务上,我的应用程序在gcp中托管时无法发送电子邮件,但我可以在本地进行。

我之前在localhost中尝试过,并且在发送电子邮件时我获得了成功,但是当我在gcp上运行它时,它没有发送任何内容,日志很清楚,没有关于错误但是记录成功。我应该在gcp中配置什么?

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

func (r *Request) SendEmail() (bool, error) {
    mime := "MIME-version: 1.0;
Content-Type: text/html;
    charset = "UTF-8";

"
    subject := "Subject: " + r.subject + "!
"
    msg := []byte(subject + mime + "
" + 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
}

我希望从这个邮件服务收到一个消息

答案

你实际上是从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列入白名单。

以上是关于为什么我无法从我在GCP中托管的应用使用Gmail SMTP发送电子邮件?的主要内容,如果未能解决你的问题,请参考以下文章

Gmail 不会从我在 Android 上的应用程序发送附件

如何从我的 Android 应用程序访问新的 Gmail API?

错误 SMTP 无法从 gmail 发送电子邮件

无法通过 unix 套接字从托管在不同 GCP 项目中的 App Engine 柔性环境连接到 Cloud SQL

MailConnectException:无法连接到主机,端口:smtp.gmail.com,465;超时-1

无法在 Outlook Android 中设置收件人