2012-02-22 2 views
12

Magento est ne pas envoyer les e-mails, transnationale, formulaire de contact donne erreurmagento ne pas envoyer de mails, comment déboguer?

cannot send your mail at this moment 

J'ai vérifié

  • Configuration de la messagerie dans magento, tous les comptes de messagerie sont configurés dans les paramètres
  • php courrier fonctionne très bien un test.php avec php mail envoie un message
  • vérifié mes journaux de mailserver mais je n'y vois rien aucune erreur
  • /var/log/system.log et Exception.log ne montre qu'une erreur non la cause de l'erreur

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

Répondre

2

Tout programme php peut faire un travail demi-décente de l'envoi du courrier envoyé avec phpmail.

Étant donné le message d'erreur, ce que votre build Magento essaie de faire est différent - utilisez Sendmail via la bibliothèque Zend.

Vous devrez créer et tester votre installation sendmail. Ou utilisez un autre service de messagerie tel que Gmail et demandez à Magento de l'utiliser.

Pour tester si c'est vous, votre ordinateur ou Magento, mettez un autre programme tel que Roundcube Mail là-bas. Si Roundcube Mail peut envoyer du courrier, alors vous saurez que Sendmail fonctionne, sinon vous saurez que le problème est dans Sendmail.

La résolution de votre Sendmail est spécifique à la distribution.

+0

J'ai ajouté un module smtp pour magento qui supporte l'authentification mais il essaie toujours d'envoyer du courrier vrai sendmail transport/sendmail.php: S très frustrant, les scripts php réguliers fonctionnent très bien avec le mail magento n'envoie pas d'email transactionnel ou formulaire de contact – Ilse

+0

Roundcube envoie bien le courrier, comment pourrais-je faire magento faire envoyer des mails aussi? Toute suggestion sur thix? THX! – Ilse

26

je suis tombé sur ce problème quand Magento n'a pas été envoie oublié des e-mails de mot de passe (encore des rapports qu'il a fait à l'utilisateur), puis après avoir regardé en /var/log/exception.log trouvé l'erreur qu'il générait était:

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} 

Ainsi a ouvert /app/code/core/Mage/Core/Model/Email/Template.php et a trouvé le code qui a été lancer cette erreur (sur la ligne 354) était:

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

avait donc un coup d'œil à isValidForSend():

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

Ajouté une exploitation forestière des variables au début de la fonction comme l'un de ceux-ci doit être de retour 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'); 

Ce qui crée le fichier journal /var/log/email.log qui avait:

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

Alors le problème était: !Mage::getStoreConfigFlag('system/smtp/disable') que vous pouvez corriger dans Admin > System > Configuration > Advanced > System > Mail Sending Settings et changer Disable Email Communications à No de sorte que les e-mails sont PAS désactivé.

Maintenant, il fonctionne :)

1

Ce problème peut être sendmail, si Magento e-mails d'envoi avec php transport par défaut.

Je suis connu avec la situation quand sendmail refuser des e-mails pour le domaine local, au lieu de ces e-mails relais aux serveurs MX

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

Je recommande de vérifier mail.log sur le serveur, et trouvé s'il y a des erreurs comme un user unknown qui signifie une mauvaise configuration sendmail

0

S'il y a un problème avec le modèle de courrier électronique .Vous obtenez ce error.So avant de vérifier les journaux de courrier électronique vérifier votre modèle de courrier électronique, d'ailleurs lorsque son coutume modèle d'email, le code n'est pas cassé.

2

J'ai aussi eu du mal avec le problème des e-mails de commande ne sont pas envoyés dans CE 1.9.1, mais trouvé le problème après un certain temps:

À partir de Magento CE 1.9.1 Magento ne pas envoyer des e-mails de commande directement pendant le processus de commande. Au lieu de cela les mails sont mis en file d'attente et sont envoyés par le cron. Assurez-vous donc de configurer le cronjob Magento correctement.

Se référer également à:

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(); 
} 

aussi, dans mon erreur cas journal m'a pris à cette fonction. La configuration dans l'admin était bien. Mais $ this-> getTemplateSubject() envoyait une valeur false car le template manquait dans/app/locale/folder. Donc ajouté le modèle qui manquait. Après ça ça a marché pour moi.

Questions connexes