मैंने 'ईमेल', 'मैसेज' आदि जैसे स्ट्रिंग्स के लिए मैगेंटो 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);
}
}
$email->setBodyHtml($body)