你现在的位置:首页 > PHP网站建设知识库 > magento > 正文

magento无法发送邮件的排查方法

 情况一:在默认情况下Zend抛出的异常
 
2013-07-11T02:19:29+00:00 ERR (3): 
exception ‘Zend_Mail_Transport_Exception’ with message ‘Unable to send mail. ‘ in /var/www/html/lib/Zend/Mail/Transport/Sendmail.php:137 
Stack trace: 
#0 /var/www/html/lib/Zend/Mail/Transport/Abstract.php(348): Zend_Mail_Transport_Sendmail->_sendMail() 
#1 /var/www/html/lib/Zend/Mail.php(1194): Zend_Mail_Transport_Abstract->send(Object(Zend_Mail))
情况二:使用SMTP抛出的异常。
 
2013-07-10T08:28:49+00:00 DEBUG (7): Exception message: Permission denied 
Trace: #0 /var/www/html/lib/Zend/Mail/Protocol/Smtp.php(167): Zend_Mail_Protocol_Abstract->_connect(‘ssl://smtp.gmai…’) 
#1 /var/www/html/lib/Zend/Mail/Transport/Smtp.php(199): Zend_Mail_Protocol_Smtp->connect()
两种情况显示的信息不同,但是结果一致,就是都无法成功发送邮件。再调试Magento无果的情况下,想到了是否是服务器的相关配置问题。试着在服务器中创建了一个简单脚本,通过mail函数发送,结果发现,确实通过mail函数也无法正常发送邮件。比较奇怪的就在这里,服务器已经正常安装了sendmail服务,SMTP也配置正常,在客户端上调用SMTP发送邮件都能正常运行,难道只是在WEB中无法正常使用?
 
了解该情况之后,查看了linux邮件日志,异常如下,
 
Oct  9 11:42:03 localhost sendmail[3080]: NOQUEUE: SYSERR(apache): can not chdir(/var/spool/clientmqueue/): Permission denied
可以看到,该操作提示访问权限被拒绝。是不是防火墙导致的?iptables stop命令运行,继续mail发送,依然不行。最后,通过查阅一些资料,发现这个问题除了防火墙之外,还有SELinux的问题。在配置中,发现httpd_can_sendmail选项默认是off掉的。通过如下命令,可以查看相关邮件配置。
 
getsebool -a | grep mail
开启该配置,Magento就可以正常发送邮件了。