नया ऑर्डर ईमेल दो बार भेजा जा रहा है


25

मैं Magento 1.9.1 का उपयोग कर रहा हूं और एक नया ऑर्डर बनाते समय, चाहे वह फ्रंटएंड या एडमिन का हो, सिस्टम 2 ईमेल भेज रहा है - दोनों एक ही!

मैंने नेट पर देखा है और एक बग पाया है जो एक पुराना था और मुझे टिप्पणी करने के लिए उल्लेखित कोड नहीं मिला, यह भी देखा कि यह पेपैल के आदेशों के साथ करना था और यह मामला नहीं है।

मैंने सभी एक्सटेंशन अक्षम कर दिए हैं और अभी भी एक ही समस्या है और इसलिए मुझे विश्वास है कि यह एक्सटेंशन समस्या नहीं है।


1
क्या आपने इस समस्या को हल किया है? मुझे समय-समय पर एक ही अजीब दोहरे क्रम की पुष्टि मिली और पुष्टि मेल के लिए बीसीसी का उपयोग करते हुए भी। एक ग्राहक को दो मेल भी मिलते हैं या नहीं, मुझे इसकी उम्मीद नहीं है।
फॉक्स

ईमेल किसे कहा जाता है? क्या आप अपने किसी व्यवस्थापक ईमेल के साथ जांच कर रहे हैं?
SR_Magento

मुझे एक ही मुद्दा मिल रहा है (उपयोगकर्ता नया ऑर्डर देने के बाद दो ईमेल प्राप्त कर रहा है)। मैं नीचे दिए गए उत्तर के लिए निश्चित नहीं हूं और मेरे दोनों टेबल "core_email_queue" और "core_email_queue_recipients" खाली हैं, इसलिए मुझे लगता है कि यह मेरा मामला नहीं होना चाहिए। कृपया इस पर मेरी सहायता करें।
अबी शर्मा

अबी शर्मा, मेरे पास एक ही मुद्दा है, फिर भी, मुझे डुप्लिकेट ईमेल मिलते हैं ... क्या आपने इस मुद्दे को हल किया है? कृपया मुझे बताएं
लोरिया लोरिया

जवाबों:


48

यह समस्या नए Magento ईमेल कतार प्रणाली से संबंधित होनी चाहिए, जो प्राप्तकर्ता तालिका पर अनाथ रिकॉर्ड छोड़ देती है। यदि यह आपका मुद्दा है, तो मैं आपको एक फिक्स भेजता हूं।

नई Magento ईमेल कतार प्रणाली इन दो तालिकाओं का प्रबंधन करती है: core_email_queue और core_email_queue_piplients । पहले वाला ईमेल संदेशों और बाद में एक, इन संदेशों के प्राप्तकर्ता को संभालता है।

Core_email_queue मेज साफ के रूप में Magento ईमेल कतार पर ईमेल भेजा जाता है। यह सफाई एक क्रॉन टैब जॉब द्वारा की जाती है जिसे core_email_queue_clean_up कहा जाता है , जिसे ऐप / कोड / कोर / Mage / Core / etc / config.xm l config फाइल के अंदर परिभाषित किया गया है । कोड है कि प्रदर्शन सफाई पर परिभाषित किया गया है removeSentMessages में कार्य Mage_Core_Model_Resource_Email_Queue वर्ग:

/**
 * Remove already sent messages
 *
 * @return Mage_Core_Model_Resource_Email_Queue
 */
public function removeSentMessages()
{
    $this->_getWriteAdapter()->delete($this->getMainTable(), 'processed_at IS NOT NULL');
    return $this;
}

उपरोक्त कोड को क्रोन कार्य द्वारा दिन में एक बार निष्पादित किया जाता है।

लेकिन यह होता है कि core_email_queue_recipients तालिका (एक है कि ईमेल प्राप्तकर्ता रखती है, और उस से जुड़ा हुआ है core_email_queue द्वारा तालिका message_id क्षेत्र), के साथ एक साथ साफ नहीं है core_email_queue तालिका (एक है कि ई-मेल संदेश रखती है), अनाथ रिकॉर्ड के अंदर छोड़ने उस प्राप्तकर्ता तालिका जब संदेश तालिका साफ हो जाती है।

यहां वर्णित समस्या तब उत्पन्न होती है जब core_email_queue तालिका (संदेश) रीसेट हो जाती है और इस तालिका पर autoincrement message_id फ़ील्ड को 1 पर पुन: स्थापित कर दिया जाता है।

क्योंकि core_email_queue_recipients तालिका (प्राप्तकर्ता) तदनुसार साफ नहीं किया गया है, जब नए ईमेल Magento ईमेल कतार में जुड़ जाते हैं, नए रिकॉर्ड पर बनाई गई हैं core_email_queue तालिका (साथ message_id 1 से फिर से शुरू करने), और एक ही समय में नए रिकॉर्ड बनाए जाते हैं इन समान आईडी (1 से फिर से शुरू) के साथ core_email_queue_recipients तालिका पर ।

समस्या यह है कि ये आईडी प्राप्तकर्ता रिकॉर्ड्स पर पहले से ही अनाथ रिकॉर्ड (पिछले ईमेल संदेशों के कारण) के रूप में मौजूद हो सकते हैं। ये नई मैसेज आईडी तब कोर_मैल_केय्यू_स्रीपिल्टर्स टेबल के अंदर दोहराई जाती हैं। अंत में, विभिन्न ईमेल संदेश Message_id द्वारा अपने संबंधित प्राप्तकर्ताओं से जुड़े होते हैं , लेकिन वे पिछले रसीदों से भी गलत तरीके से जुड़ जाते हैं जिन्हें पिछले ईमेल से एक ही message_id सौंपा गया था।

इस प्रकार, जब प्राप्तकर्ता को दिए गए संदेश को भेजने के लिए खोजा जाता है, तो उपयुक्त प्राप्तकर्ता के अलावा, अन्य गलत प्राप्तकर्ता उत्पन्न हो सकते हैं।

सौभाग्य से इस मुद्दे के लिए प्रदर्शन करना आसान है।

सभी की जरूरत है कि core_email_queue_recipients तालिका पर सभी दोहराया संदेश आईडी साफ कर रहा है, और सुनिश्चित करें कि जब एक संदेश core_email_queue तालिका पर हटा दिया जाता है , उसी समय इसके संबंधित प्राप्तकर्ता कोर_email_queue_recipients तालिका पर हटा दिए जाते हैं।

इसे प्राप्त करने का सबसे अच्छा तरीका एक विदेशी कुंजी बनाना है जो इन रिकॉर्डों को जोड़ता है और उन्हें कैस्केड पर हटा देता है (लेकिन आपको ऐसा करने से पहले कुछ सफाई करने की आवश्यकता है)।

यह समस्या को ठीक करने की प्रक्रिया है:

1) अनाथ रिकॉर्ड्स और बार-बार संदेश आईडी से core_email_queue_recipients तालिका साफ़ करने के लिए निम्नलिखित दो SQL प्रश्नों का निष्पादन करें :

DELETE FROM core_email_queue_recipients WHERE message_id NOT IN (SELECT message_id FROM core_email_queue);
DELETE FROM core_email_queue_recipients WHERE recipient_id < (SELECT recipient_id FROM (SELECT recipient_id FROM core_email_queue_recipients ORDER BY message_id ASC, recipient_id DESC LIMIT 1) AS r);

पहली क्वेरी अनाथ रिकॉर्ड को हटा देती है, और दूसरा पुराना रिकॉर्ड हटा देता है जो अब मान्य नहीं हैं।

2) कैस्केड पर प्राप्तकर्ता के रिकॉर्ड को हटाने के लिए core_email_queue_recipients तालिका पर एक विदेशी कुंजी बनाएं । इस विदेशी कुंजी को बनाने के लिए SQL क्वेरी है:

ALTER TABLE core_email_queue_recipients ADD FOREIGN KEY(message_id) REFERENCES core_email_queue(message_id) ON DELETE CASCADE;

इस नई विदेशी कुंजी का उपयोग करके, core_email_queue_recipients तालिका में कोई भी अनाथ रिकॉर्ड नहीं छोड़ा जाएगा जब core_email_queue तालिका को साफ किया जाएगा , और भविष्य में गलत प्राप्तकर्ताओं को कोई डुप्लिकेट किए गए संदेश नहीं भेजे जाएंगे।


2
महान अनुसंधान और काम फिक्सर César प्रदान की। यह Magento टीम द्वारा दिया गया एक प्रमुख निरीक्षण है कि इससे संभावित रूप से ग्राहक का नाम और पता अन्य ग्राहकों को भेजा जाएगा। किसी को पता है कि अगर यह (जो) पैच / इस समस्या के बाद से जारी किया गया था पता चला है?
जिगोजाको

अभी भी एक ही आदेश ईमेल के मुद्दे का सामना करना पड़ रहा है उपरोक्त समाधान को लागू करने के बाद एक ही ईमेल पते पर कई बार भेजा जा रहा है। क्या आप कृपया मदद करें ??
aton1004

मैं जाँच कर रहा हूँ मेरे दोनों टेबल पहले से ही खाली हैं, तो क्या मुझे इन दो चरणों (प्रश्नों) को चलाना है ???
अबी शर्मा

किसी भी तरह से मैंने इन प्रश्नों का प्रदर्शन किया है, लेकिन कोई मदद नहीं .. अभी भी दो बार आदेश ईमेल प्राप्त कर रहा है
अबी शर्मा

5

मुझे भी यही समस्या थी। प्रत्येक ऑर्डर के लिए मुझे ग्राहकों को मेरे स्टोर पते पर ई-मेल और एक अलग ई-मेल प्राप्त होगा - दोनों मेरे स्टोर ई-मेल खाते के मेलबॉक्स में।

Magento के व्यवस्थापक में: सिस्टम> कॉन्फ़िगरेशन> बिक्री ई-मेल> ऑर्डर

मैंने "सेपरेट ई-मेल" से "Bcc" तक ई-मेल "सेंड ऑर्डर ई-मेल कॉपी मेथड" सेट किया है, और यह अब काम करता है। मैं अब केवल एक ई-मेल प्रति आदेश प्राप्त कर रहा हूं।


3
मैं पहले से ही Bcc विधि का उपयोग कर रहा हूँ ताकि दुर्भाग्य से मेरे लिए यह समस्या न हो :(
क्रिस्टोफर थ्रोअर

मैं पहले से ही इस सेटिंग का उपयोग कर रहा हूं, लेकिन उपयोगकर्ता को नया ऑर्डर देने के बाद 2 ईमेल मिल रहे हैं।
अबी शर्मा

1

मुझे भी यही समस्या थी। मेरे मामले में समस्या cron.sh स्क्रिप्ट के स्रोत कोड के कारण हुई

मेरे होस्टिंग प्रदाता ने Magento cron-job के लिए cron.sh और cron.php स्क्रिप्ट के अपने संस्करणों का उपयोग किया ।

जब मैंने मैगेंटो -क्रोन-जॉब को शुरू करने के लिए cron.sh स्क्रिप्ट से cron.php स्क्रिप्ट में बदल दिया तो नया ऑर्डर eMail केवल एक बार भेजा गया, मेरा प्रोबेल्म हल हो गया।

हो सकता है कि आपके मुद्दे का cron.sh या cron.php स्क्रिप्ट के कोड के साथ कुछ करना है ।


नमस्ते, हम पहले से ही Magento cron जॉब के लिए cron.php स्क्रिप्ट का उपयोग कर रहे हैं लेकिन मुझे दो बार ईमेल मिल रहे हैं।
अबी शर्मा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.