मैंने अपनी वेबसाइट को 1.9.1 पर अपग्रेड कर लिया है और अब मेरे ग्राहकों को ऑर्डर कंफर्मेशन ईमेल नहीं मिल रहा है।
मैंने व्यवस्थापक पैनल के माध्यम से भेजने की कोशिश की, लेकिन कुछ भी नहीं होता है, कोई अपडेट ईमेल भी प्राप्त नहीं हो रहा है।
मैंने अपनी वेबसाइट को 1.9.1 पर अपग्रेड कर लिया है और अब मेरे ग्राहकों को ऑर्डर कंफर्मेशन ईमेल नहीं मिल रहा है।
मैंने व्यवस्थापक पैनल के माध्यम से भेजने की कोशिश की, लेकिन कुछ भी नहीं होता है, कोई अपडेट ईमेल भी प्राप्त नहीं हो रहा है।
जवाबों:
cron.sh
चल रहा है! हम सिर्फ एक पूरा दिन डिबगिंग में बिताते हैं ताकि क्रोन को गलत तरीके से खोजा जा सके।
हमारे Magento 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
मैंने 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;
}
वहाँ दो समाधान इस प्रकार है:
समाधान -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
Magento 1.9 के साथ सभी ईमेल कतारबद्ध हो जाएंगे और बाद में क्रोन के माध्यम से भेजेंगे।
यदि आप चाहते हैं कि आपका लेनदेन ईमेल क्रोन के माध्यम से भेजा जाए, तो आप सिस्टम > कॉन्फ़िगरेशन > टैब से क्रॉन को सेट कर सकते हैं या टैब क्रोन के तहत सिस्टम बना सकते हैं या Cpanel में क्रोन बना सकते हैं। इसे अपने रूट Magento डायरेक्टरी में स्थित cron.sh या cron.php पर निर्देशित कर सकते हैं।
बस "SMTP प्रो ईमेल" एक्सटेंशन स्थापित करें: http://www.magentocommerce.com/magento-connect/smtp-pro-email-free-custom-smtp-email.html
अपने कस्टम SMTP विवरण और भरे हुए के साथ भरें।
यह पता लगाने में मुझे पूरे दो दिन लग गए। कोई क्रोन जॉब्स की जरूरत नहीं है, हालांकि अगर आप क्रॉन जॉब्स काम करना चाहते हैं और आप ऊपर नहीं करना चाहते हैं, तो आप निम्न कार्य कर सकते हैं:
उपरांत:
$isShellDisabled = (stripos(PHP_OS, ‘win’) === false) ? $isShellDisabled : true;
इस कोड को जोड़ें:
$isShellDisabled = true;
C पैनल पर क्रोन जॉब्स सेक्शन
खोलें एक क्रॉन जॉब बनाएं जो हर 15 मिनट में निम्नलिखित कमांड चलाता है:
php -f /home/USERNAME/public_html/domain.com/magento_folder/cron.php
Magento 1.9.1.0 में, Magento ने एक नई विशेषता जोड़ी है: वे ऑर्डर की ईमेल core_email_queue
भेजने के लिए तालिका में ऑर्डर ईमेल संग्रहीत करते हैं । हमें cron.php
सर्वर में सेट करना होगा
cron.php
फ़ाइल सेट core_email_queue_send_all
क्रोन शेड्यूल तालिका में। जब क्रोन "भेजें" विधि से निष्पादित होता है Mage_Core_Model_Email_Queue
। वे ग्राहक को मेल भेजते हैं।
इसलिए ऊपर की कोर फाइल में बिना किसी बदलाव के फिक्स काम हो रहा है।
बस नीचे दिए गए आदेश के अनुसार अपने सर्वर पर क्रोन सेटअप करें और फिर आपको बिक्री मेल प्राप्त होने लगेंगे।
php -q /home/YOUR_USER_NAME/public_html/Path_to_cron.php
"*****" के रूप में सामान्य सेटिंग्स का उपयोग करें
आपके साथ आपका_USER_NAME और Path_to_cron.php बदलने की आवश्यकता है।
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 सेकंड में कतार में सभी ईमेल भेजता है।
यदि यह केवल ऑर्डर ईमेल नहीं भेज रहा है, तो इसका कारण यह है कि Magento केवल ऑर्डर ईमेल को कतार में रखता है और उन्हें बैचों में भेजने के लिए बचाता है। यदि आपके पास अपना हार्टबीट क्रोन सेटअप नहीं है .. तो वे मैगनेटो कतार को कभी नहीं छोड़ेंगे।
आप अन्य Magento के ईमेल देख रहे हैं क्योंकि वे सीधे Magento से आपके मेलर डेमन को दिए गए हैं। Magento की कतारें (ऑर्डर ईमेल की तरह) भी मेलर डेमन को तब तक नहीं सौंपी जाती, जब तक कि हार्टबीट क्रोन नहीं चलता।
उन्हें बाहर जाने के लिए मजबूर करने के लिए ... http://yourmagentodomain.com/cron.php पर नेविगेट करें और हर पांच मिनट में उस पृष्ठ को ताज़ा करते रहें और आप कतारबद्ध क्रम के ईमेल देखेंगे और बाहर जाना शुरू करेंगे। हार्टबीट क्रोन आपके लिए ऐसा करने वाला है। ओह, और जब आप उस cron.php फ़ाइल पर नेविगेट करते हैं, तो पृष्ठ रिक्त माना जाता है इसलिए चिंतित न हों ... यह काम करेगा।
मैंने इसे प्राप्त करने के लिए ज्ञान के आधार का अनुसरण किया: http://www.magentocommerce.com/knowledge-base/entry/ee1141-ce191-responsive-email#contact-info
पिछले निर्देश का पालन करने के बाद, "en_UK को कॉपी करना" (अंत में पहले भेजे गए लोगों सहित) पर ईमेल प्राप्त करने के बाद, हमें इस बात की भी समस्या थी कि ऑर्डर कन्फर्मेशन पेज पर ग्राहकों को प्रदर्शित नहीं किया जा रहा है। समापन। यह भी तय हो गया।
उदाहरण के लिए en_GB लोकेल के लिए आपको उन फ़ाइलों को कॉपी करना होगा, जो यहाँ स्थित हैं:
एप्लिकेशन / भाषा / en_US / टेम्पलेट / ईमेल
स्थान के लिए:
एप्लिकेशन / भाषा / en_GB / टेम्पलेट / ईमेल
यदि आपका मेल सिस्टम (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\*/) {
यदि आपके पास इसे निष्क्रिय करने के प्रयास की तुलना में SMTPpro का विस्तार है। और फिर से जाँच करें। सभी ईमेल ठीक काम करते हैं और आपको केवल सही तरीके से कॉन्फ़िगर करने की आवश्यकता है।
बेहतर तरीका है कि आप अपने ऐप / कोड / कोर / Mage / Core / Model / Email / Template / Mailer.php की एक प्रतिलिपि बनाएँ
आपके स्थानीय फ़ोल्डर ऐप / कोड / स्थानीय / दाना / कोर / मॉडल / ईमेल / टेम्पलेट / Mailer.php के लिए
फिर लाइन 76 में इस लाइन पर टिप्पणी करें
->setQueue($this->getQueue())
फिर आप कर रहे हैं। सफलता को संशोधित करने की कोई आवश्यकता नहीं है। : डी