【发布时间】:2011-08-17 15:45:25
【问题描述】:
祝大家今天好。
我有以下问题:
我有一个 cron 向使用 zend 邮件程序发送一些邮件的脚本发送请求。
在测试机器上它没有任何问题。问题是在生产机器上出现以下错误:
xception 'Zend_Mail_Protocol_Exception' with message 'Connection timed out' in /var/www/html/site/include/Zend/Mail/Protocol/Abstract.php:254
Stack trace:
#0 /var/www/html/bca/include/Zend/Mail/Protocol/Smtp.php(167): Zend_Mail_Protocol_Abstract->_connect('tcp://182.19.13...')
#1 /var/www/html/bca/include/Zend/Mail/Transport/Smtp.php(199): Zend_Mail_Protocol_Smtp->connect()
#2 /var/www/html/bca/include/Zend/Mail/Transport/Abstract.php(348): Zend_Mail_Transport_Smtp->_sendMail()
#3 /var/www/html/bca/include/Zend/Mail.php(1178): Zend_Mail_Transport_Abstract->send(Object(Zend_Mail))
#4 /var/www/html/bca/include/DatabaseObject/Newsletter.php(249): Zend_Mail->send()
#5 /var/www/html/bca/include/Controllers/NewsletterController.php(551): DatabaseObject_Newsletter->sendEmail('', 'f04e3ae3586c39f...')
#6 /var/www/html/bca/include/Zend/Controller/Action.php(513): NewsletterController->processAction()
#7 /var/www/html/bca/include/Zend/Controller/Dispatcher/Standard.php(295): Zend_Controller_Action->dispatch('processAction')
#8 /var/www/html/bca/include/Zend/Controller/Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
#9 /var/www/html/bca/public_html/index.php(660): Zend_Controller_Front->dispatch()
我运行的 cron 是:
wget -O - -t 1 https://www.site.ro/newsletter/process --no-check-certificate
或者,类似的,
wget -O - -t 1 http://www.site.ro/newsletter/process
当我第一次收到问题时,我告诉他们检查 SMTP 配置,但 ppl.那个配置坚持认为配置没问题。所以……我不知道。似乎缺乏连接,但他们仍然坚持认为没问题。有什么帮助吗?
嗯……我不知道他们做了什么……但现在他们明白了:
exception 'Zend_Mail_Protocol_Exception' with message '5.3.3 AUTH mechanism LOGIN not available ' in /var/www/html/bca/include/Zend/Mail/Protocol/Abstract.php:408 Stack trace:
#0 /var/www/html/bca/include/Zend/Mail/Protocol/Smtp/Auth/Login.php(91): Zend_Mail_Protocol_Abstract->_expect(334)
#1 /var/www/html/bca/include/Zend/Mail/Protocol/Smtp.php(217): Zend_Mail_Protocol_Smtp_Auth_Login->auth()
#2 /var/www/html/bca/include/Zend/Mail/Transport/Smtp.php(200): Zend_Mail_Protocol_Smtp->helo('localhost')
#3 /var/www/html/bca/include/Zend/Mail/Transport/Abstract.php(348): Zend_Mail_Transport_Smtp->_sendMail()
#4 /var/www/html/bca/include/Zend/Mail.php(1178): Zend_Mail_Transport_Abstract->send(Object(Zend_Mail))
#5 /var/www/html/bca/include/DatabaseObject/Newsletter.php(249): Zend_Mail->send()
#6 /var/www/html/bca/include/Controllers/NewsletterController.php(551): DatabaseObject_Newsletter->sendEmail('', 'f04e3ae3586c39f...')
#7 /var/www/html/bca/include/Zend/Controller/Action.php(513): NewsletterController->processAction()
#8 /var/www/html/bca/include/Zend/Controller/Dispatcher/Standard.php(295): Zend_Controller_Action->dispatch('processAction')
#9 /var/www/html/bca/include/Zend/Controller/Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
#10 /var/www/html/bca/public_html/index.php(660): Zend_Controller_Front->dispatch()
#11 {main}
我建议第七次检查用户/通行证...他们仍然说没问题。
【问题讨论】:
-
您是否已经检查过是否可以从生产服务器连接到 SMTP 服务器?因为当您查看堆栈跟踪时,这就是导致超时的原因...
-
我就是这么说的,但我没有直接访问权限,而且那些有权限的人一直在说(相信我,我问了他们大约 99999 次)一切都很好。
-
您可以要求他们检查日志,如果他们没有看到来自您的服务器的连接尝试,则可能是您端的防火墙相关问题(即服务器未配置允许特定 - 特权 - 端口的出站连接)。即使这应该是一个下降并且不会导致超时,但你永远不知道:p。
-
顺便说一句,您还可以通过使用另一个 SMTP 服务器来测试问题是否出在他们身上......因为如果这样有效,那肯定是他们身上的问题。
-
我邮寄给他们了...我也要求提供日志但是...这需要一段时间。
标签: php zend-framework email smtp send