我被困在这个问题上了。我正在做一个项目,使用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版本。
谢谢
==
更新1
从PHP 5.6降级到PHP 5.5似乎已经解决了这个问题,但我不喜欢仅仅为了解决问题而降级PHP的想法。我是从这个issue得到这个想法的
因此,如果有人有更好的解决方案,我仍然愿意接受。我确实注意到,在这个问题中,有人指出了5.6的解决方案,但它涉及编辑供应商文件,这对我来说不起作用,因为我试图将所有这些自动化。
发布于 2020-05-08 22:50:50
我花了半天的时间来了解如何连接Mautic 2.16.2和PHP 7.1。
问题是在SwiftMailer (STREAM_CRYPTO_METHOD_TLS_CLIENT)中定义的TLS版本常量。对于向后兼容性,它指向TLS的1.0v。您可以在/mautic/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/StreamBuffer.php.中将STREAM_CRYPTO_METHOD_TLS_CLIENT更改为STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT (或其他版本
欲了解更多信息,请访问this SwiftMailer issue
发布于 2016-07-13 10:52:15
我遇到了一个模拟问题。最近解决了两件事:首先,更新到2.0.0版本,然后我发现(尽管不确定是否是真的),在我的主机(godaddy服务器)上,cron作业必须以非常特定的顺序进行,最后没有任何繁琐的代码,如下所示:
mautic:campaigns:触发mautic:campaigns:rebuild mautic:iplookup:下载mautic:电子邮件:发送mautic:email:fetch mautic:segments:update
https://stackoverflow.com/questions/37280019
复制相似问题