12

Magentoメールを送信していません、多国籍、お問い合わせフォームにエラーがあります

 cannot send your mail at this moment

私がチェックしました

  • Magentoでのメール設定、すべてのメールアカウントは設定で設定されます
  • phpメールは正常に動作しますphpメールを使用したtest.phpはメッセージを送信します
  • メールサーバーのログを確認しましたが、エラーはありません。
  • /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

4

6 に答える 6

26

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

これらの1つが返す必要があるため、関数の開始時に変数のログを追加しました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

今それは動作します:)

于 2012-05-30T04:55:51.170 に答える
2

どのphpプログラムでも、phpmailを使用して電子メールを送信するという半ばまともな仕事をすることができます。

エラーメッセージが表示された場合、Magentoビルドが実行しようとしていることは異なります。Zendライブラリを介してSendmailを使用してください。

sendmailのインストールをビルドしてテストする必要があります。または、Gmailなどの他のメールサービスを使用して、Magentoにそれを使用させます。

それがあなた、あなたのコンピュータ、またはMagentoであるかどうかをテストするには、RoundcubeMailなどの他のプログラムをそこに置きます。Roundcube Mailがメールを送信できる場合は、Sendmailが機能していることがわかります。そうでない場合は、Sendmailに問題があることがわかります。

Sendmailの修正はディストリビューション固有です。

于 2012-02-22T16:55:47.737 に答える
2

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

于 2015-01-27T10:33:37.580 に答える
1
public function isValidForSend()
{
    return !Mage::getStoreConfigFlag('system/smtp/disable')
        && $this->getSenderName()
        && $this->getSenderEmail()
        && $this->getTemplateSubject();
}

また、私の場合、エラーログでこの関数にたどり着きました。管理者の設定は問題ありませんでした。しかし、 $this->getTemplateSubject() はテンプレートが /app/locale/ フォルダーの下にないため、偽の値を送信していました。不足していたテンプレートを追加しました。その後、それは私のために働いた。

于 2016-08-02T06:41:48.100 に答える
0

メール テンプレートに問題がある場合、このエラーが発生します。そのため、メール ログを確認する前に、メール テンプレートを確認してください。さらに、カスタム メール テンプレートの場合、コードは壊れていません。

于 2014-03-19T17:49:27.577 に答える