Php 邮件程序功能在 Google Cloud Platform 上不起作用

omp*_*rma 0 php phpmailer google-cloud-platform

最近我在Google Cloud Platform上上传了一个小型的 php 网页,但是上传网站后我发现PHP Mailer功能不发送邮件。

本地主机中的相同代码运行完美,具有相同的SMTP凭据。

是否需要更改我的代码?

请任何人帮我解决这个问题。

A M*_*A M 8

我只想为 2019 年遇到此问题的任何人添加一些内容。我没有对 Krzysztof 的评论发表评论的声誉级别,因此我将其发布为答案。他的评论是在 2017 年留下的,当时有效。但是,在 2019 年,除 25 之外的所有端口都在 Google 云上开放 - 包括 587 (TLS) 和 465 (SSL)。

如果您使用计算引擎并发送邮件,您可能需要配置防火墙规则,允许您使用的端口的出站流量!这不是显而易见的。如果您尝试在 25 以外的任何端口上发送,如果事情不正常,请检查此项。25,正如我所说,被阻止。这是一个链接,向您展示如何在实例上执行此操作。截至 2019 年 6 月,它位于页面底部。这很简单。 https://cloud.google.com/compute/docs/tutorials/sending-mail/

截至 2019 年 6 月,如果您有计算机引擎虚拟机,以下是为外发电子邮件设置防火墙规则的步骤:

  1. 转至创建防火墙规则页面。(登录您已经拥有计算引擎 VM 的 Google Cloud 帐户,然后将其放入浏览器 - https://console.cloud.google.com/networking/firewalls/
  2. 为防火墙规则选择一个名称。
  3. 在网络下,选择托管您打算从中发送电子邮件的虚拟机实例的网络。
  4. 在流量方向下,选择出口。
  5. 在目标下,为此规则选择适当的目标。例如,如果您希望规则应用于具有特定标签的实例,您可以选择指定的目标标签。
  6. 如果要允许从 VM 实例到任何目标的出口流量,请在目标过滤器下设置 0.0.0.0/0。如果要限制目的地,请在此处输入另一个 IP 范围。如果您的电子邮件托管在其他地方,这一点很重要。
  7. 在协议和端口下,选择指定的协议和端口 > tcp 并输入 2525。
  8. 保存您的更改。

这是如何设置发送电子邮件(计算引擎)的链接 - https://cloud.google.com/compute/docs/tutorials/sending-mail/

这是设置 FROM 电子邮件帐户的教程。所有电子邮件帐户都必须来自 Google 托管帐户。例如,我在 Google Cloud 上托管了一个网站,因此我需要设置我的邮件将来自 Google 的电子邮件帐户,但只要我这样做(应用引擎),我就可以使用他们的服务发送电子邮件 -https:/ /cloud.google.com/appengine/docs/standard/python/mail/#who_can_send_mail

这是 2019 年在 Google Cloud 上使用 php 发送电子邮件的教程(App Engine)- https://cloud.google.com/appengine/docs/standard/php/mail/sending-receiving-with-mail-api

这是 2019 年从 Google 发送电子邮件的另一个教程(计算引擎)- https://cloud.google.com/compute/docs/tutorials/sending-mail/

正如约翰在我的答案下方的评论中指出的那样,我没有包含我链接到的文档的文本。但是,我没有这样做,因为文档文本可以更改,正如我们在 Google Cloud 中看到的很多次一样,我个人讨厌当我来到 Stack Overflow 并根据此处的说明走一条路径时才发现该过程几个月前变了。所以我认为,在这种狭隘的情况下,就目前而言,指向文档的链接可能是最好的。