2012-02-22 23 views
12

Magento no es el envío de correos electrónicos, transnacional, formulario de contacto da errormagento no enviar ningún correo, ¿cómo depurar?

cannot send your mail at this moment 

he comprobado configuración del correo

  • en Magento, todas las cuentas de correo electrónico se encuentran en la configuración
  • php mail funciona bien un test.php con php mail envía un mensaje
  • revisé los registros de mi servidor de correo pero no veo nada allí no hay errores
  • /var/log/system.log y exception.log sólo muestra un error no es la causa del error

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

Respuesta

2

Cualquier programa PHP puede hacer un trabajo medio decente de enviar algún correo electrónico con phpmail.

Dado el mensaje de error, Lo que intenta hacer su compilación de Magento es diferente: use Sendmail a través de la biblioteca de Zend.

Necesitarás construir y probar tu instalación de sendmail. O use algún otro servicio de correo como gmail y obtenga Magento para usarlo.

Para comprobar si eres tú, tu computadora o Magento, pon otro programa como Roundcube Mail allí. Si Roundcube Mail puede enviar correo, sabrá que Sendmail está funcionando, de lo contrario sabrá que el problema está en Sendmail.

La reparación de su Sendmail es específica de la distribución.

+0

Agregué un módulo smtp para magento que admite autenticación pero todavía está intentando enviar correo verdadero sendmail transportation/sendmail.php: S muy frustrante, las secuencias de comandos php normales funcionan bien con mail magento simplemente no enviará ningún correo electrónico transaccional o Formulario de contacto. – Ilse

+0

Roundcube envía correos bien, ¿cómo puedo hacer que magento también envíe correos? ¿Alguna sugerencia sobre thix? ¡Gracias! – Ilse

26

me encontré con este problema cuando Magento no estaba enviando olvidó correos electrónicos de contraseñas (sin embargo, la presentación de informes se hizo para el usuario) a continuación, después de mirar en /var/log/exception.log encontrado el error que generaba era:

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} 

Así abrieron /app/code/core/Mage/Core/Model/Email/Template.php y ha encontrado el código que estaba lanzando este error (en la línea 354) fue:

if (!$this->isValidForSend()) { 
    Mage::logException(new Exception('This letter cannot be sent.')); // translation is intentionally omitted 
    return false; 
} 

así que tenía un vistazo a isValidForSend():

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

añadido algunas registro de las variables en el inicio de la función como uno de éstos debe regresar 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'); 

que crea el archivo de registro /var/log/email.log que tenía:

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

Así el problema era: !Mage::getStoreConfigFlag('system/smtp/disable') que puede reparar en Admin > System > Configuration > Advanced > System > Mail Sending Settings y cambiar Disable Email Communications por No, por lo que los correos electrónicos son NOT deshabilitado.

ahora funciona :)

1

que pueden ser sendmail problema, si Magento envío de correos electrónicos con el transporte php defecto.

Tengo experiencia con la situación cuando sendmail negar emails sobre dominio local, en lugar de relé de esos mensajes de correo electrónico a los servidores MX

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

recomiendo comprobar mail.log en el servidor, y encontré si hay errores como una user unknown que significa sendmail configuración incorrecta

0

Si hay un problema con la plantilla de correo electrónico .tiene conseguir este error.So antes de comprobar los registros de correo electrónico Comprueba la plantilla de correo electrónico, por otra parte cuando su costumbre plantilla de correo electrónico, el código no está roto.

2

también tuve problemas con el problema de los mensajes de correo electrónico de pedidos no se envían a CE 1.9.1, pero encontré el problema después de un tiempo:

A partir de Magento Magento CE 1.9.1 no envía mensajes de correo electrónico de pedidos directamente durante el proceso de pedido. En cambio, los correos están en cola y son enviados por el cron. Así que asegúrese de configurar el cronjob de Magento correctamente.

también se refieren a:

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

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

también, en mi registro de errores caso me llevó a esta función. La configuración en admin estaba bien. Pero $ this-> getTemplateSubject() enviaba un valor falso porque faltaba la plantilla en/app/locale/folder. Así que agregó la plantilla que faltaba. Después de eso funcionó para mí.

Cuestiones relacionadas