I have created module to send email using mass actions, but it is showing 404 error.
etc/acl.xml
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Acl/etc/acl.xsd">
<acl>
<resources>
<resource id="Magento_Backend::admin">
<resource id="Magento_Backend::stores">
<resource id="Magento_Backend::stores_settings">
<resource id="Magento_Config::config">
<resource id="Vendor_MassEmailCustomers::massemailcustomers_configuration" title="Mass Email Customers Section" />
</resource>
</resource>
</resource>
</resource>
</resources>
</acl>
</config>
view/adminhtml/ui_components/sales_order_grid.xml
<listing xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Ui:etc/ui_configuration.xsd">
<listingToolbar name="listing_top">
<massaction name="listing_massaction">
<action name="mass_email_rx">
<settings>
<confirm>
<message translate="true">Are you sure to send Rx Missing Email to the selected customers?</message>
<title translate="true">Send Rx Missing Email</title>
</confirm>
<url path="massemailcustomers/email/rxSend"/>
<type>mass_email_rx</type>
<label translate="true">Send Rx Missing Email</label>
</settings>
</action>
</massaction>
</listingToolbar>
</listing>
etc/adminhtml/routes.xml
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/etc/routes.xsd">
<router id="admin">
<route id="massemailcustomers" frontName="massemailcustomers">
<module name="Vendor_MassEmailCustomers" before="Magento_Backend" />
</route>
</router>
</config>
Conroller/Adminhtml/Email/RxSend.php
<?php
declare(strict_types=1);
namespace Vendor\MassEmailCustomers\Controller\Adminhtml\Email;
use Magento\Framework\Controller\ResultFactory;
use Magento\Backend\App\Action\Context;
use Magento\Framework\Mail\Template\TransportBuilder;
use Magento\Framework\Translate\Inline\StateInterface;
use Magento\Ui\Component\MassAction\Filter;
use Magento\Backend\App\Action;
use Magento\Framework\Exception\LocalizedException;
use Magento\Customer\Model\ResourceModel\Customer\CollectionFactory as CustomerCollectionFactory;
use Magento\Sales\Model\ResourceModel\Order\CollectionFactory as SalesCollectionFactory;
use Vendor\MassEmailCustomers\Model\Config;
use Magento\Framework\App\Area;
use Magento\Sales\Model\Order;
use Magento\Framework\Exception\MailException;
use Magento\Backend\Model\View\Result\Redirect;
class RxSend extends Action
{
/**
* @var Filter
*/
protected $filter;
/**
* @var salesCollectionFactory
*/
protected $salesCollectionFactory;
/**
* @var CustomerCollectionFactory
*/
protected $customerCollectionFactory;
/**
* @var Config
*/
protected $config;
/**
* @var TransportBuilder
*/
protected $transportBuilder;
/**
* @var StateInterface
*/
protected $inlineTranslation;
/**
* @param Context $context
* @param Filter $filter
* @param Config $config
* @param CustomerCollectionFactory $customerCollectionFactory
* @param SalesCollectionFactory $salesCollectionFactory
* @param TransportBuilder $transportBuilder
* @param StateInterface $inlineTranslation
*/
public function __construct(
Context $context,
Filter $filter,
Config $config,
CustomerCollectionFactory $customerCollectionFactory,
SalesCollectionFactory $salesCollectionFactory,
TransportBuilder $transportBuilder,
StateInterface $inlineTranslation
) {
$this->filter = $filter;
$this->config = $config;
$this->customerCollectionFactory = $customerCollectionFactory;
$this->salesCollectionFactory = $salesCollectionFactory;
$this->transportBuilder = $transportBuilder;
$this->inlineTranslation = $inlineTranslation;
parent::__construct($context);
}
/**
* Execute action
*
* @return Redirect
* @throws LocalizedException
*/
public function execute()
{
var_dump("rx email to send");
}
}