magento not sending out any mails, how to debug?(magento 不发送任何邮件,如何调试?)
问题描述
Magento
不发送任何电子邮件,跨国,联系表出错
Magento
is not sending out any emails, transnational, contact form gives error
cannot send your mail at this moment
我检查过
- magento 中的邮件设置,所有电子邮件帐户都在设置中设置
- php 邮件工作正常,带有 php 邮件的 test.php 发送消息
- 检查了我的邮件服务器日志,但没有看到任何错误
/var/log/system.log 和 exception.log 只显示错误,而不是错误原因
- Mail setup in magento, all email accounts are set in settings
- php mail works fine a test.php with php mail sends out a message
- checked my mailserver logs but see nothing there no errors
/var/log/system.log and exception.log shows only an error not the cause of the error
异常 'Zend_Mail_Transport_Exception' 与message '无法发送邮件.' 在/var/webshop/httpdocs/lib/Zend/Mail/Transport/Sendmail.php:137
推荐答案
当 Magento 没有发送忘记密码的电子邮件(但已向用户报告)然后查看 /var/后,我遇到了这个问题log/exception.log
发现它产生的错误是:
I ran into this problem when Magento was not sending out forgot password emails (yet reporting it did to the user) then after looking in /var/log/exception.log
found the error it was generating was:
2012-05-30T04:27:54+00:00 ERR (3):
exception 'Exception' with message 'This letter cannot be sent.' in /home/magento/www/app/code/core/Mage/Core/Model/Email/Template.php:354
Stack trace:
#0 /home/magento/www/app/code/core/Mage/Core/Model/Email/Template.php(463): Mage_Core_Model_Email_Template->send(Array, Array, Array)
#1 /home/magento/www/app/code/core/Mage/Core/Model/Email/Template/Mailer.php(79): Mage_Core_Model_Email_Template->sendTransactional('customer_passwo...', 'support', Array, Array, Array, '1')
#2 /home/magento/www/app/code/core/Mage/Customer/Model/Customer.php(646): Mage_Core_Model_Email_Template_Mailer->send()
#3 /home/magento/www/app/code/core/Mage/Customer/Model/Customer.php(663): Mage_Customer_Model_Customer->_sendEmailTemplate('customer/passwo...', 'customer/passwo...', Array, '1')
#4 /home/magento/www/app/code/core/Mage/Customer/controllers/AccountController.php(554): Mage_Customer_Model_Customer->sendPasswordResetConfirmationEmail()
#5 /home/magento/www/app/code/core/Mage/Core/Controller/Varien/Action.php(420): Mage_Customer_AccountController->forgotPasswordPostAction()
#6 /home/magento/www/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(250): Mage_Core_Controller_Varien_Action->dispatch('forgotpasswordp...')
#7 /home/magento/www/app/code/core/Mage/Core/Controller/Varien/Front.php(176): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http))
#8 /home/magento/www/app/code/core/Mage/Core/Model/App.php(349): Mage_Core_Controller_Varien_Front->dispatch()
#9 /home/magento/www/app/Mage.php(640): Mage_Core_Model_App->run(Array)
#10 /home/magento/www/index.php(84): Mage::run('default', 'store')
#11 {main}
于是打开/app/code/core/Mage/Core/Model/Email/Template.php
,发现抛出这个错误的代码(第354行)是:
So opened up /app/code/core/Mage/Core/Model/Email/Template.php
and found the code that was throwing this error (on line 354) was:
if (!$this->isValidForSend()) {
Mage::logException(new Exception('This letter cannot be sent.')); // translation is intentionally omitted
return false;
}
所以看看isValidForSend()
:
public function isValidForSend()
{
return !Mage::getStoreConfigFlag('system/smtp/disable')
&& $this->getSenderName()
&& $this->getSenderEmail()
&& $this->getTemplateSubject();
}
在函数开始时添加了一些变量日志记录,因为其中之一必须返回 false
:
Added some logging of the variables at the start of the function as one of these must be returning false
:
Mage::Log(var_export(!Mage::getStoreConfigFlag('system/smtp/disable'),true).';'.var_export($this->getSenderName(),true).';'.var_export($this->getSenderEmail(),true).';'.var_export($this->getTemplateSubject(),true),null,'email.log');
它创建了日志文件 /var/log/email.log
,其中有:
Which creates the log file /var/log/email.log
which had:
2012-05-30T04:44:37+00:00 DEBUG (7): false;'CustomerSupport';'support@example.com';'Password Reset Confirmation for {{var customer.name}}'
所以问题是:!Mage::getStoreConfigFlag('system/smtp/disable')
你可以在 Admin > 中修复它系统>配置>高级 >系统>邮件发送设置
并将Disable Email Communications
更改为No
,以便不禁用电子邮件.
So the problem was: !Mage::getStoreConfigFlag('system/smtp/disable')
which you can fix up in Admin > System > Configuration > Advanced > System > Mail Sending Settings
and change Disable Email Communications
to No
so the emails are NOT disabled.
现在可以了:)
这篇关于magento 不发送任何邮件,如何调试?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:magento 不发送任何邮件,如何调试?


- PHP - if 语句中的倒序 2021-01-01
- 如何使用 Google API 在团队云端硬盘中创建文件夹? 2022-01-01
- Oracle 即时客户端 DYLD_LIBRARY_PATH 错误 2022-01-01
- 如何在 Symfony2 中正确使用 webSockets 2021-01-01
- 使用 GD 和 libjpeg 支持编译 PHP 2022-01-01
- 如何从数据库中获取数据以在 laravel 中查看页面? 2022-01-01
- 覆盖 Magento 社区模块控制器的问题 2022-01-01
- openssl_digest vs hash vs hash_hmac?盐与盐的区别HMAC? 2022-01-01
- Laravel 5:Model.php 中的 MassAssignmentException 2021-01-01
- PHP foreach() 与数组中的数组? 2022-01-01