【发布时间】:2017-11-16 19:04:56
【问题描述】:
我正在配置 Magento 1.9.1 以使用外部 SMTP 发送电子邮件,使用 SMTP PRO (https://www.magentocommerce.com/magento-connect/smtp-pro-email-free-custom-smtp-email.html)。
我已经设置了配置(主机名、端口、用户名、密码),但是当我尝试发送测试电子邮件时,它失败并显示“无法打开套接字”错误消息。如果我深入研究代码,我发现错误是从 lib/Zend/Mail/Protocol/Abstract.php 中的这段代码生成的:
$this->_socket = @stream_socket_client($remote, $errorNum, $errorStr, self::TIMEOUT_CONNECTION);
if ($this->_socket === false) {
if ($errorNum == 0) {
$errorStr = $remote.' Could not open socket '.phpversion();
}
/**
* @see Zend_Mail_Protocol_Exception
*/
#require_once 'Zend/Mail/Protocol/Exception.php';
throw new Zend_Mail_Protocol_Exception($errorStr);
}
我的 PHP 环境 (5.6.30) 支持 openssl(见下图和 sn-p)
[root@ns3023903 httpdocs]# php -r 'print_r(stream_get_transports());'
Array
(
[0] => tcp
[1] => udp
[2] => unix
[3] => udg
[4] => ssl
[5] => sslv3
[6] => sslv2
[7] => tls
)
没有防火墙问题,因为我既可以在端口 465 上 telnet 到目标主机,也可以使用 phpmailer 使用相同的 SMTP 发送电子邮件,并使用我用来运行站点虚拟主机的同一用户。
我在 CentOS 7 64 位服务器上,禁用了 SELinux,如果这很重要,我正在使用 Plesk 12 配置虚拟主机。
名称解析也可以正常工作(我可以正确 ping SMTP 名称并且可以正常查找 IP 地址)。
我显然在这里遗漏了一些东西......但是什么?
【问题讨论】:
标签: php email magento ssl zend-framework