Hello All,
First Create a file in etc folder email_templates.xml
<?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../Email/etc/email_templates.xsd"> <template id="template id" label="Email Form" file="file path" type="html" module="CompanyName_ModuleName" area="frontend"/> </config>
Then create a controller file or helper file where you want to write a code for sending email
<?php
/**
*
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace CompanyName\ModuleName\Controller\Adminhtml\Index;
class Sendmail extends \Magento\Framework\App\Action\Action
{
/**
* Recipient email config path
*/
const XML_PATH_EMAIL_RECIPIENT = 'test/email/send_email';
/**
* @var \Magento\Framework\Mail\Template\TransportBuilder
*/
protected $_transportBuilder;
/**
* @var \Magento\Framework\Translate\Inline\StateInterface
*/
protected $inlineTranslation;
/**
* @var \Magento\Framework\App\Config\ScopeConfigInterface
*/
protected $scopeConfig;
/**
* @var \Magento\Store\Model\StoreManagerInterface
*/
protected $_storeManager;
protected $_encryptor;
/**
* @var \Magento\Framework\Escaper
*/
protected $_escaper;
protected $_userFactory;
public function __construct(
\Magento\Framework\App\Action\Context $context, \Magento\Framework\Mail\Template\TransportBuilder $transportBuilder,
\Magento\Framework\Translate\Inline\StateInterface $inlineTranslation,
\Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
)
{
parent::__construct($context);
$this->_transportBuilder = $transportBuilder;
$this->inlineTranslation = $inlineTranslation;
$this->scopeConfig = $scopeConfig;
$this->_escaper = $escaper;
}
public function execute()
{
$this->inlineTranslation->suspend();
try {
/*Here we prepare data for our email*/
/* Receiver Info */
$receiverInfo =['Receiver Name'=>'Receiver Name','Receiver Email'=>'Receiver Email'];
/* Sender Info */
$senderInfo =['Sender Name'=>'Sender Name','Sender Email'=>'Sender Email'];
$templateVars =array('name'=>$name,'email'=>$email);
$templateOptions = array(
'area' => \Magento\Framework\App\Area::AREA_FRONTEND,
'store' => $this->_storeManager->getStore()->getId()
);
$transport = $this->_transportBuilder
->setTemplateIdentifier('send_email_email_template')
->setTemplateOptions($templateOptions)
->setTemplateVars($templateVars)
->setFrom($senderInfo)
->addTo($receiverInfo['email'],$receiverInfo['name'])
->getTransport();
$transport->sendMessage();
$this->inlineTranslation->resume();
$this->messageManager->addSuccess(__('Mail Sent Successfully!'));
$resultRedirect = $this->resultRedirectFactory->create();
$resultRedirect->setRefererOrBaseUrl();
return $resultRedirect;
} catch (\Exception $e) {
$this->inlineTranslation->resume();
$this->messageManager->addError(__($e->getMessage()));
$resultRedirect = $this->resultRedirectFactory->create();
$resultRedirect->setRefererOrBaseUrl();
return $resultRedirect;
}
}
}
}
Hello @Vivek Singh
To send an email we should use SMTP, so why we have to create this module?
Hello @Manish Mittal
This is useful when we want to send email from particular module or creating a custom button for sending email.
Right, then please correct your description so this post will help to users. Thanks for sharing this useful post.