magento не рассылает никаких писем, как отлаживать? - PullRequest
12 голосов
/ 22 февраля 2012

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

Ответы [ 6 ]

26 голосов
/ 30 мая 2012

Я столкнулся с этой проблемой, когда 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';'support@example.com';'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 голосов
/ 27 января 2015

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

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

Также обратитесь к:

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

2 голосов
/ 22 февраля 2012

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

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

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

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

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

1 голос
/ 02 августа 2016
public function isValidForSend()
{
    return !Mage::getStoreConfigFlag('system/smtp/disable')
        && $this->getSenderName()
        && $this->getSenderEmail()
        && $this->getTemplateSubject();
}

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

1 голос
/ 11 июля 2013

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

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

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

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

0 голосов
/ 19 марта 2014

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

...