Magento 2: ईमेल भेजने का कार्यक्रम


24

क्या Magento 2 का Amazon SES, Mandrill, इत्यादि जैसे थर्ड पार्टी ट्रांजेक्शन ईमेल डिलिजेबिलिटी सिस्टम के साथ कोई अंतर्निर्मित एकीकरण है, या अंतर्निहित फ़ंक्शन कार्यक्षमता अभी भी PHP के mailफ़ंक्शन के आधार पर है? या ईमेल किसी तीसरी चीज़ के साथ भेजे जाते हैं?

यदि उत्तर है mail, तो क्या Magento 2 के लिए SMTPPro जैसे कोई तृतीय पक्ष एक्सटेंशन हैं जो किसी डेवलपर को मानक ईमेल सिस्टम को बदलने देगा?

जवाबों:


13

मैंने 'ईमेल', 'मैसेज' आदि जैसे स्ट्रिंग्स के लिए मैगेंटो 2 कोडबेस में चारों ओर खोजना शुरू किया, जब तक कि मुझे कुछ ऐसा नहीं मिला, जो ईमेल भेजता है। मैं SendPaymentFailedEmail () में ठोकर खाई vendor/magento/module-checkout/Helper/Data.php। यह बहुत सारे चर सेट करता है, लेकिन अंततः उन्हें एक परिवहन वस्तु में बाँध देता है, जो एक 'ट्रांसपोर्टब्यूरी' के माध्यम से बनाई जाती है। यह TransportBuilder का एक उदाहरण है \Magento\Framework\Mail\Template\TransportBuilder

उस फ़ाइल में, एक $transportचर मौजूद होता है, जिसका एक उदाहरण है \Magento\Framework\Mail\TransportInterface। क्योंकि एक इंटरफ़ेस है, एक नियमित वर्ग भी कहा जाता है \Magento\Framework\Mail\Transport। जब हम फ़ाइल खोलते हैं vendor/magento/framework/Mail/Transport.php, तो हम देखते हैं कि यह Zend_Mail_Transport_Sendmail का विस्तार करता है;

वर्ग परिवहन \ Zend_Mail_Transport_Sendmail लागू करता है, \ Magento \ फ्रेमवर्क \ Mail \ TransportInterface को बढ़ाता है

यह वही है जो आप ढूंढ रहे हैं। DI का उपयोग करते हुए, आप इस ट्रांसपोर्ट को Zend_Mail के बजाय किसी अन्य ईमेल फ्रेमवर्क जैसे कि Mandrill या Amazon SES से बदल पाएंगे।

बस उस send()विधि को शामिल करना सुनिश्चित करें क्योंकि वह विधि कहलाती है sendMessage();

public function sendMessage()
{
    try {
        parent::send($this->_message);
    } catch (\Exception $e) {
        throw new \Magento\Framework\Exception\MailException(new \Magento\Framework\Phrase($e->getMessage()), $e);
    }
}

12

Magento 2 TransportBuilderईमेल की बॉडी को बनाने के लिए एक ईमेल टेम्प्लेट का उपयोग करता है। सबसे सरल तरीका जो मुझे सादा पाठ भेजने के लिए मिला - उपयोग Zend_Mail(जो कि Magento 2 द्वारा ही प्रयोग किया जाता है):

$email = new \Zend_Mail();
$email->setSubject("Feedback email");
$email->setBodyText($body);
$email->setFrom($from, $nameFrom);
$email->addTo($to, $nameTo);
$email->send();

3
यदि आप शरीर को html के रूप में भेजना चाहते हैं, तो आप उपयोग कर सकते हैं$email->setBodyHtml($body)
अनीश करीम

हालाँकि, यदि आप Google जैसी किसी चीज़ के माध्यम से smtp का उपयोग कर रहे हैं, तो यह महान है, तो इस सूत्र का पालन करें stackoverflow.com/questions/3455674/…
Ahdee

मैं Magento पर इस की कोशिश की है लेकिन एक त्रुटि गंभीर त्रुटि हो रही है: गंभीर त्रुटि: Uncaught त्रुटि: क्लास 'Zend_Mail' /srv/public_html/pub/test.php में नहीं मिला
नागराजू कश्मीर

@ नागराजुके, क्या आपने संगीतकार के ऑटोडर को अपने में शामिल किया /srv/public_html/pub/test.php?
एलेक्स गुसेव

कोई @AlexGusev मेरे test.php फ़ाइल में संगीतकार के ऑटोडर को जोड़ने के लिए मुझे मार्गदर्शन नहीं कर सकता है?
नागराजू के 10

8

PHP के mail()आउटडेटेड होने और किसी भी 3th का समर्थन नहीं करने के बारे में अक्सर एक धारणा है । पार्टी सेवाएं।
यह वास्तव में गलत है, जैसा कि हर अच्छा 3 वां है। पार्टी सेवा एक SMTP इंटरफ़ेस का समर्थन करती है, और ऐसा ही mail()बहुत कुछ भी करती है।

अमेज़न SES SMTP का समर्थन करता है।

और एसएमटीपी के माध्यम से भेजना mail()इस उत्तर में वर्णित है: /programming//a/14457410/716029


1
उपयोगी जानकारी के लिए +1 - लेकिन मुझे अभी भी इस बात में दिलचस्पी है कि यदि कोई हो, तो एब्स्ट्रैक्शन मैगेंटो में HTTP सेवाओं के माध्यम से विभिन्न ईमेल का समर्थन करने के लिए है।
एलन स्टॉर्म

Zend_Mail के अलावा कोई विशेष कार्यान्वयन नहीं, दुर्भाग्य से।
पीटर जाप ब्लैकेमर

-1

Magento 2 कस्टम ईमेल भेजने के लिए \ Magento \ Framework \ Mail \ Template \ TransportBuilder वर्ग का उपयोग करता है ।

आपको अपने लेनदेन मेल टेम्प्लेट को परिभाषित करने के लिए एक सरल मॉड्यूल बनाने और email_tempaltes.xml फ़ाइल सेट करने की आवश्यकता है ।

आप Adminhtml या फ्रंटेंड स्कोप क्षेत्र से मेल भेज सकते हैं।

मैंने एक मॉड्यूल का उपयोग करके Magento 2 से एक कस्टम मेल भेजने के लिए चरण-दर-चरण एक लिंक साझा किया है।

Magento 2 मॉड्यूल से कस्टम मेल भेजें

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