'ইমেল', 'বার্তা' ইত্যাদির মতো স্ট্রিংয়ের জন্য আমি ম্যাজেন্টো 2 কোডবেজে প্রায় অনুসন্ধান শুরু করেছি যতক্ষণ না আমি কোনও ইমেল প্রেরণকারী কিছু খুঁজে পেয়েছি। আমি প্রেরিতপেইমেন্টফেইডএমেইল () এ হোঁচট খেয়েছি vendor/magento/module-checkout/Helper/Data.php
। এটি প্রচুর ভেরিয়েবল সেট করে তবে শেষ পর্যন্ত এগুলি ট্রান্সপোর্ট আইটেমের সাথে সংযুক্ত করে, যা একটি 'ট্রান্সপোর্টবিল্ডার' এর মাধ্যমে তৈরি করা হয়। এই ট্রান্সপোর্টবিল্ডার একটি উদাহরণ \Magento\Framework\Mail\Template\TransportBuilder
।
এই ফাইলটিতে একটি $transport
চলক বিদ্যমান, যা এর উদাহরণ \Magento\Framework\Mail\TransportInterface
। কারণ একটি ইন্টারফেস রয়েছে, নিয়মিত ক্লাসও বলা হয় \Magento\Framework\Mail\Transport
। আমরা যখন ফাইলটি খুলি vendor/magento/framework/Mail/Transport.php
, আমরা দেখতে পাই এটি জেন্ড_মেল_টান্সপোর্টসপেন্ডেল প্রসারিত করে;
শ্রেণি পরিবহন প্রসারিত হয় \ জেনড_মেল_ট্যান্সপোর্টস্যান্ডমেল প্রয়োগসমূহ \ ম্যাজেন্টো \ ফ্রেমওয়ার্ক \ মেল \ ট্রান্সপোর্টইন্টারফেস
এটিই আপনি খুঁজছেন। ডিআই ব্যবহার করে আপনি এই পরিবহণটিকে জেন্ড_মেলের পরিবর্তে ম্যান্ড্রিল বা অ্যামাজন এসইএসের পরিবর্তে অন্য ইমেল কাঠামোর সাথে প্রতিস্থাপন করতে সক্ষম হবেন।
কেবল 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)