I have to override Sender.php which path is Magento\Sales\Model\Order\Email
I try but its not work my code is :
di.xml
<type name="Magento\Sales\Model\Order\Email\Sender">
<plugin name="module_name::aroundPrepareTemplate" type="module\name\Model\Order\Email\Sender" sortOrder="99999"/>
</type>
module\name\Model\Order\Email Sender.php
<?php
namespace module\name\Model\Order\Email;
use Magento\Sales\Model\Order;
use Magento\Sales\Model\Order\Email\Container\IdentityInterface;
use Magento\Sales\Model\Order\Email\Container\Template;
use Magento\Sales\Model\Order\Address\Renderer;
abstract class Sender
{
protected $senderBuilderFactory;
protected $templateContainer;
protected $identityContainer;
protected $logger;
protected $addressRenderer;
public function __construct(
Template $templateContainer,
IdentityInterface $identityContainer,
\Magento\Sales\Model\Order\Email\SenderBuilderFactory $senderBuilderFactory,
\Psr\Log\LoggerInterface $logger,
Renderer $addressRenderer
) {
$this->templateContainer = $templateContainer;
$this->identityContainer = $identityContainer;
$this->senderBuilderFactory = $senderBuilderFactory;
$this->logger = $logger;
$this->addressRenderer = $addressRenderer;
}
public function aroundPrepareTemplate($subject,Order $order)
{
$this->templateContainer->setTemplateOptions($this->getTemplateOptions());
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$orderItems = $order->getAllItems();
foreach ($orderItems as $item) {
$product = $objectManager->get('Magento\Catalog\Model\Product')->load($item->getProductId());
$categoryIds = $product->getCategoryIds();
}
foreach($categoryIds as $catid){
$_objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$category = $_objectManager->create('Magento\Catalog\Model\Category')
->load($catid);
}
if ($order->getCustomerIsGuest()) {
$templateId = $this->identityContainer->getGuestTemplateId();
$customerName = $order->getBillingAddress()->getName();
} else {
$templateId = $this->identityContainer->getTemplateId();
$customerName = $order->getCustomerName();
}
if($catid == 461){
$templateId = 11 ;
}
$this->identityContainer->setCustomerName($customerName);
$this->identityContainer->setCustomerEmail($order->getCustomerEmail());
$this->templateContainer->setTemplateId($templateId);
}
}