我坚持这个。我正在开发一个项目,使用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进行测试时这会让我失望?
测试脚本也使用Mautic实例使用的相同vendor
文件夹,因此我知道它使用完全相同的SwiftMailer版本。
由于
==
从PHP 5.6降级到PHP 5.5似乎已经解决了这个问题,但我不喜欢降级PHP只是为了解决问题。我从这个issue
中得到了这个想法因此,如果有人有更好的解决方案,我仍然会开放。我注意到在这个问题上,有人指出了5.6的解决方案,但它涉及编辑供应商文件,这对我来说并不适用,因为我试图自动完成所有这些。
答案 0 :(得分:1)
我花了半天的时间来了解如何与Mautic 2.16.2和PHP 7.1进行连接。
问题是SwiftMailer中定义的TLS版本常量(STREAM_CRYPTO_METHOD_TLS_CLIENT)。为了向后兼容,它指向TLS的1.0版本。你可以改变
在{em> /mautic/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/StreamBuffer.php 中从STREAM_CRYPTO_METHOD_TLS_CLIENT
到STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT
(或其他版本)。
有关更多信息,请检查this SwiftMailer issue
答案 1 :(得分:0)
我有一个类似的问题。最近解决了两件事:首先,更新到2.0.0版本,然后我想出(虽然不确定是否真的)cron作业必须在我的主机(godaddy服务器)的非常特定的顺序没有最后的doohicky代码,如下:
mautic:活动:触发 mautic:活动:重建 mautic:iplookup:下载 mautic:电子邮件:发送 mautic:电子邮件:取 mautic:段:更新