問題描述
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 不發送任何郵件,如何調試?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!