How to Send Magento 2 Email in a few easy steps?

Learn how to send Magento 2 email and to send email easily with the platform in a few steps.

The following steps will send an Email in Magento 2. Listed are:

  1. email_templates.xml file
  2. email_templates.html
  3. Config.xml
  4. Manager files to send mail
Build your Amazon-like multi-vendor marketplace website @ $249/- now!!!
            Get your free live demo now: Click here

Magento 2 Email: A Step-By-Step Procedure To Send Easily

Step 1: Email_templates.xml File

To create an email_templates.xml file in

<?xml version="1.0"?>

<config xmlns:xsi="" xsi:noNamespaceSchemaLocation="../../Email/etc/email_templates.xsd">

<template id="send_email_email_template" label="Email Form" file="email_template.html" type="text" module="[Name_Space]_[Your_Module]" area="frontend"/>


Step 2: Email_templates.html file

To create a Email_templates.html file in app/code/local/[Name_Space]/[Your_Module]/view/frontend/mail
<!--@subject Test Form@-->

<!--@vars {

"var data.comment":"Test",

"var":"Sender Email",

"var":"Sender Name"

} @-->

{{trans "Name: %name" name=$}}

{{trans "Email: %email" email=$}}

{{trans "Test: %test" test=$data.test}}

Step 3: Config.xml file

To create a config.xml file in

<?xml version="1.0"?>



 * Copyright © 2016 Magento. All rights reserved.

 * See COPYING.txt for license details.



<config xmlns:xsi="" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Store:etc/config.xsd">









Controller files to send Magento 2 email

To create a controller file to send email in app/code/local/[Name_Space]/[Your_Module]/controller/sendEmail

The following code:


* 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;


* @var \Magento\Framework\Escaper


protected $_escaper;


* @param \Magento\Framework\App\Action\Context $context

* @param \Magento\Framework\Mail\Template\TransportBuilder $transportBuilder

* @param \Magento\Framework\Translate\Inline\StateInterface $inlineTranslation

* @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig

* @param \Magento\Store\Model\StoreManagerInterface $storeManager


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,

\Magento\Store\Model\StoreManagerInterface $storeManager,

\Magento\Framework\Escaper $escaper

) {


$this->_transportBuilder = $transportBuilder;

$this->inlineTranslation = $inlineTranslation;

$this->scopeConfig = $scopeConfig;

$this->storeManager = $storeManager;

$this->_escaper = $escaper;


* Post user question


* @return void

* @throws \Exception


public function execute()


$post = $this->getRequest()->getPostValue();

if (!$post) {





try {

$postObject = new \Magento\Framework\DataObject();


$error = false;

$sender = [

'name' => $this->_escaper->escapeHtml($post['name']),

'email' => $this->_escaper->escapeHtml($post['email']),

$storeScope = \Magento\Store\Model\ScopeInterface::SCOPE_STORE;

$transport = $this->_transportBuilder

->setTemplateIdentifier('send_email_email_template') // this code we have mentioned in the email_templates.xml



'area' => \Magento\Framework\App\Area::AREA_FRONTEND, // this is using frontend area to get the template file

'store' => \Magento\Store\Model\Store::DEFAULT_STORE_ID,



->setTemplateVars(['data' => $postObject])


->addTo($this->scopeConfig->getValue(self::XML_PATH_EMAIL_RECIPIENT, $storeScope))


$transport->sendMessage(); ;



__('Thanks for contacting us with your comments and questions. We\'ll respond to you very soon.')




} catch (\Exception $e) {



__('We can\'t process your request right now. Sorry, that\'s all we know.'.$e->getMessage())






These are the following steps that will help you to send an email in Magento 2. I hope that this information will be helpful to you to send an Email.

Contact us to develop an eCommerce business website with 300+ features today!

Magento 2 email






Leave a Reply

Your email address will not be published. Required fields are marked *