我坚持这个。我正在开发一个使用 Docker 容器在 AWS 的 Elastic Beanstalk 上自动部署和配置 Mautic 实例的项目。一切似乎都井然有序,但是当我在 Mautic 配置的电子邮件设置中单击“测试连接”时,我总是收到“无法使用 TLS 加密连接”。
如果我不使用任何加密,我可以正常连接并发送电子邮件。因此,这不是端口阻塞问题或凭据错误。
我已确保 OpenSSL 已安装并在 PHP 中运行。
Mautic 正在使用 swiftmailer 发送电子邮件,因此我进入了他们的代码,并复制了他们用于测试的确切代码片段。我像这样将它插入到一个测试脚本中,然后运行它。
<?php
require_once __DIR__ . '/vendor/autoload.php';
try {
$mailer = new \Swift_SmtpTransport('...', 587, 'tls');
$mailer->setUsername('...');
$mailer->setPassword('...');
$mailer->start();
die('hello');
}
catch(Exception $e){
echo $e->getMessage();
}
这很好用。我什至添加了发送电子邮件所需的其余代码,并且它很好地到达了我的邮箱。此脚本是从 AWS Elastic Beanstalk 服务器上的 docker 容器内部执行的。
那么我错过了什么?为什么在通过 mautic 进行测试时这让我失败了?
测试脚本也使用vendor
Mautic 实例使用的相同文件夹,所以我知道它使用的是完全相同版本的 SwiftMailer。
谢谢
==
更新 1
从 PHP 5.6 降级到 PHP 5.5 似乎已经解决了这个问题,但我不喜欢仅仅为了解决问题而降级 PHP 的想法。我从这个问题中得到了想法
因此,如果有人有更好的解决方案,我仍然持开放态度。我确实注意到这个问题,有人指出了 5.6 的解决方案,但它涉及编辑供应商文件,这对我不起作用,因为我正在尝试自动化所有这些。