Unix上的PHP邮件队列异常 - 专家意见

时间:2016-04-15 14:22:29

标签: php email unix smtp

我正在使用Mail Queue在我的应用程序中发送电子邮件(https://pear.php.net/package/Mail_Queue/

相同的代码在Windows上工作正常(php版本:5.5.28),它在unix上提供了下面提到的异常(php 5.6版)

PHP User Notice 'yii\base\ErrorException' with message 'Error in sending mail: authentication failure [SMTP: STARTTLS failed (code: 220, response: Begin TLS negotiation now)]'

邮件服务器凭据很好。它们在Linux和Windows上都是一样的。 Code 220表示the server is ready(通过http://www.serversmtp.com/en/smtp-error

我在某处看到它是由于php5.6而且它在5.5上工作正常但我不这么认为这将是问题的有效答案/解决方案。

2 个答案:

答案 0 :(得分:0)

我想这是因为PHP 5.6默认情况下进行SSL对等验证,而PHP 5.5则没有。我想如果您修复了有效的SSL证书,它应该可以工作,或者在您的代码中禁用ssl verify-peer。

在没有Mail_Queue的情况下,我不知道如何在没有任何示例代码的情况下修复它。

答案 1 :(得分:0)

从EC2实例发送电子邮件受亚马逊限制,并严格限制在网络级别。这是为了防止垃圾邮件和其他滥用行为。

如果您要向客户发送大量电子邮件,建议的方法是使用Amazon Simple Email Service。使用Amazon SES,您可以发送交易电子邮件,营销信息或任何其他类型的高质量内容,您只需支付使用的费用。

Connecting to the Amazon SES SMTP Endpoint

如果您确实需要从EC2实例发送电子邮件,则必须使用弹性IP地址并要求Amazon支持从该EIP中删除对SMTP流量的限制。

或者我建议您使用Sendgrid,它们快速准确,每月免费提供12000封电子邮件。