1

我坚持这个。我正在开发一个使用 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 进行测试时这让我失败了?

测试脚本也使用vendorMautic 实例使用的相同文件夹,所以我知道它使用的是完全相同版本的 SwiftMailer。

谢谢

==

更新 1

从 PHP 5.6 降级到 PHP 5.5 似乎已经解决了这个问题,但我不喜欢仅仅为了解决问题而降级 PHP 的想法。我从这个问题中得到了想法

因此,如果有人有更好的解决方案,我仍然持开放态度。我确实注意到这个问题,有人指出了 5.6 的解决方案,但它涉及编辑供应商文件,这对我不起作用,因为我正在尝试自动化所有这些。

4

2 回答 2

1

我花了半天时间了解如何连接 Mautic 2.16.2 和 PHP 7.1。

问题是 SwiftMailer (STREAM_CRYPTO_METHOD_TLS_CLIENT) 中定义的 TLS 版本常量。为了向后兼容,它指向 TLS 的 1.0 v.。您可以 在/mautic/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/StreamBuffer.phpSTREAM_CRYPTO_METHOD_TLS_CLIENT中更改为STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT(或其他版本)。

有关更多信息,请查看此 SwiftMailer 问题

于 2020-05-08T14:50:50.130 回答
0

我有一个类似的问题。最近解决了两件事:首先,更新到 2.0.0 版本,然后我发现(尽管不确定是否属实)cron 作业必须在我的主机(godaddy 服务器)上以非常特定的顺序排列,没有任何最后的doohicky代码,如下所示:

mautic:campaigns:trigger mautic:campaigns:rebuild mautic:iplookup:download mautic:emails:send mautic:email:fetch mautic:segments:update

于 2016-07-13T02:52:14.607 回答