如何使用PHP中的Swiftmailer库使用STARTTLS和自签名证书发送邮件

时间:2016-05-05 22:25:59

标签: php email ssl swiftmailer

我想使用SwiftMailer类库在PHP脚本中发送邮件。

Mailserver提供STARTTLS命令并使用自签名证书。

问题是SwiftMailer tgo发送邮件似乎是一个问题。

如果我只是像这样使用coee来初始化传输:

$transport = Swift_SmtpTransport::newInstance("server.example.com", 25, "tls")
->setUsername("user@example.com")
->setPassword("example");

此错误显示:

Uncaught Swift_TransportException: Unable to connect with TLS encryption

我已经在这里和其他地方搜索过了。我在StackOverflow上找到了这个帖子:PHP - Swiftmailer using STARTTLS and self signed certificates

但是当我将上述方法添加到上面的代码中时:

->setStreamOptions(array('ssl' => array('allow_self_signed' => true, 'verify_peer' => false)));

完整的块看起来像这样:

 $transport = Swift_SmtpTransport::newInstance("server.example.com", 25, "tls")
->setUsername("user@example.com")
->setPassword("example")
->setStreamOptions(array('ssl' => array('allow_self_signed' => true, 'verify_peer' => false)));

我收到此错误:

Call to undefined method setStreamOptions

所以看起来所提到的方法已被删除或重命名。我在SwiftMailer文档中没有提到这一点。网上提到的只有少数解决方案来修补库。我没有检查过这些方法,因为我不想修改库代码。

我的SwiftMailer版本是实际的5.4.2。有没有办法解决这个问题而无需修补库,如果有必要这样做,必须如何做。

希望有人可以帮助我。

最好的问候

P.S。希望我做得很好,我的英语是可以理解的。如果有问题请询问。

1 个答案:

答案 0 :(得分:0)

我迟到了,但尝试升级到最新的swiftmailer版本,它将解决您的问题。我有5.4.1版本并切换到5.4.6以使其正常工作