Подтвердить что ты не робот

Magento не отправлять какие-либо письма, как отлаживать?

Magento не отправляет никаких писем, транснациональная, контактная форма дает ошибку

 cannot send your mail at this moment

Я проверил

  • Настройка почты в magento, все учетные записи электронной почты установлены в настройках
  • php mail работает нормально. test.php с php mail отправляет сообщение
  • проверил мои журналы почтового сервера, но ничего там не вижу.
  • /var/log/system.log и exception.log показывает только ошибку, а не причину ошибки

    exception 'Zend_Mail_Transport_Exception' with message 'Unable to send mail. ' in /var/webshop/httpdocs/lib/Zend/Mail/Transport/Sendmail.php:137

4b9b3361

Ответ 1

Я столкнулся с этой проблемой, когда Magento не отправлял электронные письма с забытым паролем (но сообщал, что сделал это с пользователем), после просмотра в /var/log/exception.log найденной ошибки, которую он генерировал, был:

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), был:

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:

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, который имел:

2012-05-30T04:44:37+00:00 DEBUG (7): false;'CustomerSupport';'[email protected]';'Password Reset Confirmation for {{var customer.name}}'

Таким образом, проблема заключалась в следующем: !Mage::getStoreConfigFlag('system/smtp/disable'), который вы можете исправить в Admin > System > Configuration > Advanced > System > Mail Sending Settings и изменить Disable Email Communications на No, чтобы сообщения НЕ были отключены.

Теперь он работает:)

Ответ 2

Любая php-программа может делать полупристойную работу по отправке некоторого сообщения электронной почты с помощью phpmail.

Учитывая сообщение об ошибке, то, что пытается создать ваша Magento, отличается от другого - используйте Sendmail через библиотеку Zend.

Вам нужно будет построить и протестировать вашу установку sendmail. Или используйте другую почтовую службу, такую ​​как gmail, и получите Magento для ее использования.

Чтобы проверить, принадлежит ли это вам, вашему компьютеру или Magento, поместите туда какую-нибудь другую программу, такую ​​как Roundcube Mail. Если Roundcube Mail может отправлять почту, то вы будете знать, что Sendmail работает, если нет, то вы узнаете, что проблема связана с Sendmail.

Исправление вашего Sendmail зависит от дистрибутива.

Ответ 3

Я также боролся с проблемой отправки сообщений электронной почты в CE 1.9.1, но через некоторое время обнаружил проблему:

Как по Magento CE 1.9.1 Magento не отправляет электронные письма заказов непосредственно во время процесса заказа. Вместо этого почта отправляется в очередь и отправляется cron. Поэтому не забудьте правильно настроить Magento cronjob.

Также смотрите:

http://www.magentocommerce.com/knowledge-base/entry/ee1141-ce191-responsive-email#cron http://www.magentocommerce.com/knowledge-base/entry/ce18-and-ee113-installing#install-cron

Ответ 4

Это может быть проблема sendmail, если Magento отправка электронной почты с транспортом php по умолчанию.

Я столкнулся с ситуацией, когда sendmail отклоняет электронные письма для локального домена, а не ретранслирует эти письма на серверы MX.

http://www.masterdef.net/blog/magento-unable-to-send-mail-sendmail-configuration/#more-1

Я рекомендую проверять mail.log на сервере и обнаруживать, есть ли ошибки, такие как user unknown это означает неправильную конфигурацию sendmail

Ответ 5

public function isValidForSend()
{
    return !Mage::getStoreConfigFlag('system/smtp/disable')
        && $this->getSenderName()
        && $this->getSenderEmail()
        && $this->getTemplateSubject();
}

также, в моем случае журнал ошибок привел меня к этой функции. Конфигурация в admin была прекрасной. Но $this- > getTemplateSubject() отправляет ложное значение, поскольку шаблон отсутствует в папке /app/locale/. Так что добавлен шаблон, который отсутствовал. После этого он работал у меня.

Ответ 6

Если возникла проблема с шаблоном электронной почты. Вы получите эту ошибку. Поэтому перед проверкой журналов электронной почты проверьте свой шаблон электронной почты, более того, когда пользовательский шаблон электронной почты не будет нарушен.