नया आदेश ईमेल पुष्टि नहीं भेजा जा रहा है


100

मैंने अपनी वेबसाइट को 1.9.1 पर अपग्रेड कर लिया है और अब मेरे ग्राहकों को ऑर्डर कंफर्मेशन ईमेल नहीं मिल रहा है।

मैंने व्यवस्थापक पैनल के माध्यम से भेजने की कोशिश की, लेकिन कुछ भी नहीं होता है, कोई अपडेट ईमेल भी प्राप्त नहीं हो रहा है।


जवाबों:


96
  1. मैगेंटो 1.9.1 के साथ शुरू होने वाले ईमेल चेकआउट के दौरान सीधे नहीं भेजे जा रहे हैं, बल्कि बदले में पंक्तिबद्ध हो रहे हैं।
  2. कतार को आपके Magento cronjob के माध्यम से संसाधित किया जा रहा है - कृपया सुनिश्चित करें कि यह सेट किया गया है और सही ढंग से चल रहा है।
  3. एक्सटेंशन AOE_Scheduler आपको यह पुष्टि करने में मदद कर सकता है कि आपका Magento cronjob सही तरीके से कॉन्फ़िगर किया गया है और चल रहा है।

6
सुनिश्चित करें कि cron.shचल रहा है! हम सिर्फ एक पूरा दिन डिबगिंग में बिताते हैं ताकि क्रोन को गलत तरीके से खोजा जा सके।
forvvunnet

2
कैसे पता चलेगा कि cron.php काम कर रहा है या नहीं?
तेजा भगवान कोललेपरा

2
आप लॉग्स को अंदर / var / log / cron
बेटो कैस्टिलो

मैं Magento 2 में आदेश ईमेल के साथ जारी है। क्रोन भी चल रहा है, लेकिन मेल नहीं भेज रहा है। डेटाबेस तालिका में अधिकांश क्रोन कार्य छूट जाते हैं। मैं इसे कैसे हल कर सकता हूं?
माजकोड

@Magecode मैं पहले Magento के 2 विशिष्ट प्रश्नों की खोज करने का सुझाव दूंगा। यदि कोई भी ऐसा नहीं है जो आपके द्वारा अभी तक प्राप्त / खारिज किए गए विवरणों के साथ अपने स्वयं के प्रश्न को जोड़ने के लिए स्वतंत्र है।
पर फोमन

29

हमारे Magento 1 स्टोर से मेल भेजने के 2 तरीके हैं।

  1. क्रोन का उपयोग करके
  2. क्रोन से बचकर

यदि आप क्रोन से बचना चाहते हैं:

पर अपना ऑर्डर खोलें

एप्लिकेशन / कोड / कोर / दाना / बिक्री / मॉडल / Order.php

रेखा # 1356,1450,

परिवर्तन

//$mailer->setQueue($emailQueue)->send(); 

सेवा:

$mailer-> send();

में app/design/frontend/base/default/template/checkout/success.phtml: मेल प्रत्यक्ष भेजने के लिए निम्नलिखित पंक्ति शीर्ष सफलता पृष्ठ जोड़ें

$order = Mage::getModel('sales/order');
$incrementId = Mage::getSingleton('checkout/session')->getLastRealOrderId(); 
$order->loadByIncrementId($incrementId);
try{ 
    $order->sendNewOrderEmail();
} catch (Exception $ex) { 
    echo "Email Not Sent..."; 
}
$customer = Mage::getSingleton('customer/session')->getCustomer();
$email = $customer->getEmail();
//End Email Sending

पूरी तरह से काम कर रहा है, कि सफलता पर कोड जोड़ने के लिए आवश्यक है। एफटीएमएल एक्सपोज बिना इसके कि यह ठीक काम कर रहा है
Suneth Kalhara

3
नमस्ते यह सुनकर खुशी हुई। किसी भी कोड को जोड़ने की आवश्यकता नहीं है क्योंकि ट्रांजेक्शनल मेल तुरंत ईमेल तक पहुंच जाएगा।
तेजा भगवान कोल्लेपरा

1
विक्रेता कोड को कभी भी न बदलें (या अधिलेखित न करें) - अपग्रेड करते समय क्या होता है?
बच्ची

20

मैंने Template.php से निम्नलिखित मेल कतार कोड को हटा दिया, फिर मैंने ईमेल प्राप्त करना शुरू कर दिया जब ग्राहक द्वारा आदेश दिया जाता है या जब मैं व्यवस्थापक पैनल "बिक्री / आदेश" टैब से ईमेल भेजता हूं।

Magento ने तत्काल ईमेल के बजाय शेड्यूल जॉब द्वारा भेजे जाने वाले ऑर्डर ईमेल को सेट किया था ... शायद प्रदर्शन कारण के लिए (मुझे पता नहीं क्यों, मैं Magento के लिए बहुत नया हूं) ... हालांकि मैं इस कोड को वापस डालने जा रहा हूं Template.php और हर 5 मिनट में चलाने के लिए शेड्यूल जॉब सेट करने और चलाने का तरीका खोजें ...

Template.php => /app/code/core/Mage/Core/Model/Email/Template.php पर स्थित है

   if ($this->hasQueue() && $this->getQueue() instanceof Mage_Core_Model_Email_Queue) { 

    /** @var $emailQueue Mage_Core_Model_Email_Queue */
        $emailQueue = $this->getQueue();
        $emailQueue->setMessageBody($text);
        $emailQueue->setMessageParameters(array(
                'subject'           => $subject,
                'return_path_email' => $returnPathEmail,
                'is_plain'          => $this->isPlain(),
                'from_email'        => $this->getSenderEmail(),
                'from_name'         => $this->getSenderName(),
                'reply_to'          => $this->getMail()->getReplyTo(),
                'return_to'         => $this->getMail()->getReturnPath(),
            ))
            ->addRecipients($emails, $names, Mage_Core_Model_Email_Queue::EMAIL_TYPE_TO)
            ->addRecipients($this->_bccEmails, array(), Mage_Core_Model_Email_Queue::EMAIL_TYPE_BCC);
        $emailQueue->addMessageToQueue();

        return true;
    }

इस विधि ने समस्या को हल किया, लेकिन समाचार पत्र सदस्यता काम नहीं कर रही है। पुराने टेम्पलेट पर वापस लौटकर। समाचार पत्र सदस्यता समस्या का हल।
बालाजीसुंदर

14

वहाँ दो समाधान इस प्रकार है:

समाधान -01: क्रोन का उपयोग करना

सिस्टम> कॉन्फ़िगरेशन> उन्नत> सिस्टम> क्रोन

डिफ़ॉल्ट सेटिंग्स हैं:

सबसे पहले, मैगेंटो 1.9+ ट्रांजैक्शन ईमेल भेजने के लिए पूरी तरह से क्रोन नौकरियों पर निर्भर करता है। यदि आपके पास क्रॉन जॉब्स पहले ठीक से सेट नहीं थे, तो आप इसे अभी करने जा रहे हैं।

सबसे पहले सुनिश्चित करें कि आपने Magento के व्यवस्थापक के अंतर्गत क्रोन कार्यों को स्थापित किया है

सिस्टम> कॉन्फ़िगरेशन> उन्नत> सिस्टम> क्रोन

डिफ़ॉल्ट सेटिंग्स हैं:

20 इतिहास के लिए हर 15 शेड्यूल से पहले शेड्यूल करें यदि 15 इतिहास में सफाई नहीं चलती है तो हर 10 सफलता का इतिहास आजीवन 60 विफलता का इतिहास आजीवन 600

ऐसे लोग हैं जो सुझाव दे रहे हैं कि इन सेटिंग्स को बदल दिया जाना चाहिए, लेकिन चूंकि वे सबसे अच्छे संयोजन पर सहमत नहीं हो सकते हैं, इसलिए मैं इसे छोड़ दूँगा।

फिर आपको अपने होस्टिंग कंट्रोल पैनल में जाने और क्रोन जॉब्स सेट करने की आवश्यकता है। CPanel में यह Advanced> Cron Jobs के अंतर्गत है। उन्हें हर पांच मिनट में चलाने के लिए सेट करें और इस कमांड का उपयोग करें:

php -f /home/username/public_html/cron.php

जांच लें कि उपरोक्त पथ सही है और फ़ाइल cron.php वास्तव में आपके Magento इंस्टॉलेशन की जड़ में है (यदि आपने अभी अपग्रेड किया है, तो यह होना चाहिए)। उपयोगकर्ता नाम को सही खाते में बदलें।

अब, मैंने शुरुआत में xtento.com पर डेवलपर्स की सलाह का पालन करने की गलती की, जो एक wget कमांड स्ट्रिंग का उपयोग करने के लिए कहते हैं: wget -O / dev / null -q http://www.YOURDOMAIN.com/PATH_TO_MAGENTOOcron। php

समाधान -02: क्रोन से बचें

लेनदेन संबंधी ईमेल तुरंत भेजे जाएंगे।

//app/code/core/Mage/Sales/Model/Order.php Line#1356,1450 
  //$mailer->setQueue($emailQueue)->send(); Change To 

          $mailer->send();

app/design/frontend/base/default/template/checkout/success.phtml
    //add following line Top success page for sending mail direct
    // Start Send Emai Here......
    $order = Mage::getModel('sales/order');
    $incrementId = Mage::getSingleton('checkout/session')->getLastRealOrderId(); 
    $order->loadByIncrementId($incrementId);

    try{ $order->sendNewOrderEmail();} 
    catch (Exception $ex) { echo "Email Not Sent..."; }
    $customer = Mage::getSingleton('customer/session')->getCustomer();
    $email = $customer->getEmail();//End Email Sending

10

Magento 1.9 के साथ सभी ईमेल कतारबद्ध हो जाएंगे और बाद में क्रोन के माध्यम से भेजेंगे।

Magento 1.9 रिलीज नोट

यदि आप चाहते हैं कि आपका लेनदेन ईमेल क्रोन के माध्यम से भेजा जाए, तो आप सिस्टम > कॉन्फ़िगरेशन > टैब से क्रॉन को सेट कर सकते हैं या टैब क्रोन के तहत सिस्टम बना सकते हैं या Cpanel में क्रोन बना सकते हैं। इसे अपने रूट Magento डायरेक्टरी में स्थित cron.sh या cron.php पर निर्देशित कर सकते हैं।


10

बस "SMTP प्रो ईमेल" एक्सटेंशन स्थापित करें: http://www.magentocommerce.com/magento-connect/smtp-pro-email-free-custom-smtp-email.html

अपने कस्टम SMTP विवरण और भरे हुए के साथ भरें।


यह पता लगाने में मुझे पूरे दो दिन लग गए। कोई क्रोन जॉब्स की जरूरत नहीं है, हालांकि अगर आप क्रॉन जॉब्स काम करना चाहते हैं और आप ऊपर नहीं करना चाहते हैं, तो आप निम्न कार्य कर सकते हैं:

Magento रूट निर्देशिका में cron.php संपादित करें

उपरांत:

$isShellDisabled = (stripos(PHP_OS, win’) === false) ? $isShellDisabled : true;

इस कोड को जोड़ें:

$isShellDisabled = true;

क्रोन जॉब सेट करें

C पैनल पर क्रोन जॉब्स सेक्शन
खोलें एक क्रॉन जॉब बनाएं जो हर 15 मिनट में निम्नलिखित कमांड चलाता है:

php -f /home/USERNAME/public_html/domain.com/magento_folder/cron.php

ध्यान दें कि SMTP प्रो के साथ यह कॉन्फ़िगरेशन Magento 1.9.1 और इसके बाद के संस्करण के लिए किया जाना चाहिए: सिस्टम -> कॉन्फ़िगरेशन -> SMTP प्रो -> कतार कॉन्फ़िगरेशन -> कतार उपयोग डिफ़ॉल्ट से कभी नहीं बदलता है।
श्रेनिक

8

Magento 1.9.1.0 में, Magento ने एक नई विशेषता जोड़ी है: वे ऑर्डर की ईमेल core_email_queueभेजने के लिए तालिका में ऑर्डर ईमेल संग्रहीत करते हैं । हमें cron.phpसर्वर में सेट करना होगा

cron.phpफ़ाइल सेट core_email_queue_send_allक्रोन शेड्यूल तालिका में। जब क्रोन "भेजें" विधि से निष्पादित होता है Mage_Core_Model_Email_Queue। वे ग्राहक को मेल भेजते हैं।

इसलिए ऊपर की कोर फाइल में बिना किसी बदलाव के फिक्स काम हो रहा है।


6

बस नीचे दिए गए आदेश के अनुसार अपने सर्वर पर क्रोन सेटअप करें और फिर आपको बिक्री मेल प्राप्त होने लगेंगे।

php -q /home/YOUR_USER_NAME/public_html/Path_to_cron.php

"*****" के रूप में सामान्य सेटिंग्स का उपयोग करें

आपके साथ आपका_USER_NAME और Path_to_cron.php बदलने की आवश्यकता है।


6

N98-magerun का उपयोग करके मैं केवल निम्नलिखित चलाता हूं:

n98-magerun sys:cron:run core_email_queue_send_all

या यदि आप इसे हर समय चलाना नहीं चाहते हैं, तो समय पर:

watch -n 10 n98-magerun sys:cron:run core_email_queue_send_all

यह हर 10 सेकंड में कतार में सभी ईमेल भेजता है।


6

क्रोनजॉब सेट करते समय गोडैडी सर्वर के लिए निम्नलिखित कोड का उपयोग करें:

*   *   *   *   *   /usr/local/bin/php -q /home/steelwa/public_html/project_name/cron.php

यह हर मिनट चलेगा।यहाँ छवि विवरण दर्ज करें


5

यदि यह केवल ऑर्डर ईमेल नहीं भेज रहा है, तो इसका कारण यह है कि Magento केवल ऑर्डर ईमेल को कतार में रखता है और उन्हें बैचों में भेजने के लिए बचाता है। यदि आपके पास अपना हार्टबीट क्रोन सेटअप नहीं है .. तो वे मैगनेटो कतार को कभी नहीं छोड़ेंगे।

आप अन्य Magento के ईमेल देख रहे हैं क्योंकि वे सीधे Magento से आपके मेलर डेमन को दिए गए हैं। Magento की कतारें (ऑर्डर ईमेल की तरह) भी मेलर डेमन को तब तक नहीं सौंपी जाती, जब तक कि हार्टबीट क्रोन नहीं चलता।

उन्हें बाहर जाने के लिए मजबूर करने के लिए ... http://yourmagentodomain.com/cron.php पर नेविगेट करें और हर पांच मिनट में उस पृष्ठ को ताज़ा करते रहें और आप कतारबद्ध क्रम के ईमेल देखेंगे और बाहर जाना शुरू करेंगे। हार्टबीट क्रोन आपके लिए ऐसा करने वाला है। ओह, और जब आप उस cron.php फ़ाइल पर नेविगेट करते हैं, तो पृष्ठ रिक्त माना जाता है इसलिए चिंतित न हों ... यह काम करेगा।


5

मेरे पास एक ही मुद्दा था और यह पता चला कि यह एक विस्तार से संबंधित था। फ़ोमन ईमेल अटैचमेंट्स को अब v0.10.4 में अपडेट कर दिया गया है। V0.10.3 से नीचे के संस्करण Magento 1.9 के साथ काम नहीं करेंगे।


5

मैंने इसे प्राप्त करने के लिए ज्ञान के आधार का अनुसरण किया: http://www.magentocommerce.com/knowledge-base/entry/ee1141-ce191-responsive-email#contact-info

पिछले निर्देश का पालन करने के बाद, "en_UK को कॉपी करना" (अंत में पहले भेजे गए लोगों सहित) पर ईमेल प्राप्त करने के बाद, हमें इस बात की भी समस्या थी कि ऑर्डर कन्फर्मेशन पेज पर ग्राहकों को प्रदर्शित नहीं किया जा रहा है। समापन। यह भी तय हो गया।

उदाहरण के लिए en_GB लोकेल के लिए आपको उन फ़ाइलों को कॉपी करना होगा, जो यहाँ स्थित हैं:

एप्लिकेशन / भाषा / en_US / टेम्पलेट / ईमेल

स्थान के लिए:

एप्लिकेशन / भाषा / en_GB / टेम्पलेट / ईमेल


2
Magento एसई में आपका स्वागत है! क्या आप अपने उत्तर (कोड उदाहरण आदि की पेशकश) पर और भी विस्तृत कर सकते हैं?
बर्कमार्क

3

यदि आपका मेल सिस्टम (smtp, zend_mail) ठीक काम करता है; mailQueue को अक्षम करने से आपकी समस्या का समाधान हो सकता है।

/app/code/core/Mage/Core/Model/Email/Template.php

लाइन 407 बदलें

if ($this->hasQueue() && $this->getQueue() instanceof Mage_Core_Model_Email_Queue) {

सेवा

if (false /\*$this->hasQueue() && $this->getQueue() instanceof Mage_Core_Model_Email_Queue\*/) {

5
यह संपर्क फ़ॉर्म कार्यक्षमता को तोड़ता है।
ज़ोया

9
कोर को संपादित न करें
केविन श्रोएडर

1
कृपया उन समाधानों को प्रदान न करें जिनके लिए कोर में परिवर्तन की आवश्यकता होती है। कोर कक्षाओं को कभी नहीं बदलना चाहिए।
अहसान होरानी

2

यदि आपके पास इसे निष्क्रिय करने के प्रयास की तुलना में SMTPpro का विस्तार है। और फिर से जाँच करें। सभी ईमेल ठीक काम करते हैं और आपको केवल सही तरीके से कॉन्फ़िगर करने की आवश्यकता है।


0

बेहतर तरीका है कि आप अपने ऐप / कोड / कोर / Mage / Core / Model / Email / Template / Mailer.php की एक प्रतिलिपि बनाएँ

आपके स्थानीय फ़ोल्डर ऐप / कोड / स्थानीय / दाना / कोर / मॉडल / ईमेल / टेम्पलेट / Mailer.php के लिए

फिर लाइन 76 में इस लाइन पर टिप्पणी करें

->setQueue($this->getQueue())

फिर आप कर रहे हैं। सफलता को संशोधित करने की कोई आवश्यकता नहीं है। : डी

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.