在 bitbucket 管道中使用时,由于身份验证,GMAIL IMAP 读取失败

GMAIL IMAP read fails due to authentication when used in bitbucket pipeline

当我通过 bitbucket 管道 运行 docker 容器 运行 中的脚本时,此调用 (imap_open()) 一直失败。

PHP Warning: imap_open(): Couldn't open stream {imap.gmail.com:993/imap/ssl/novalidate-cert}INBOX in /opt/atlassian/pipelines/agent/build/test/tools/plib/confirm.php on line 24 PHP Fatal error: Uncaught exception 'Exception' with message 'signup: confirm failed' in /opt/atlassian/pipelines/agent/build/test/tools/plib/signup.php:24 Stack trace: #0 /opt/atlassian/pipelines/agent/build/test/tools/test.php(51): signup(Array) #1 {main} thrown in /opt/atlassian/pipelines/agent/build/test/tools/plib/signup.php on line 24 PHP Notice: Unknown: Retrying PLAIN authentication after [ALERT] Please log in via your web browser: https://support.google.com/mail/acco (errflg=1) in Unknown on line 0 PHP Notice: Unknown: Retrying PLAIN authentication after [ALERT] Please log in via your web browser: https://support.google.com/mail/acco (errflg=1) in Unknown on line 0 PHP Notice: Unknown: Can not authenticate to IMAP server: [ALERT] Please log in via your web browser: https://support.google.com/mail/acco (errflg=2) in Unknown on line 0 Cannot connect to Gmail: Can not authenticate to IMAP server: [ALERT] Please log in via your web browser: https://support.google.com/mail/acco

我已遵循所有这些说明:

  1. 启用安全性较低的应用程序
  2. https://accounts.google.com/b/0/DisplayUnlockCaptcha
  3. 启用
  4. 尝试使用和不使用 /novalidate-cert 标志

当 运行 在 Mac OS 本地甚至使用 AWS EC2 实例时,相同的脚本工作正常,但当 bitbucket 或 Heroku 运行 时失败。我无法在这些实例上 运行 浏览器,因此无法尝试 Web 界面,显然一旦启用访问,它应该可以在任何地方使用。

太糟糕了,错误消息中的 link 甚至不完整。

知道如何克服这个问题吗?我想要做的就是以编程方式简单地模拟点击注册电子邮件中的验证 link。

如前所述,google 会发出警报 "Less secured apps",并且有时即使在那之后身份验证仍然失败。 这里最好的解决方案是转向 OAUTH2 身份验证方法,否则即使您找到解决此 "less secured alert" 问题的方法...它最终可能会在未来断断续续地发生。