Hello reader, In this article, we are going to send a custom email template, after creating a form, on submission of that form we will send form information by sending a custom email.
This email will use custom email template.
Email is a way to communicate with customers and suppliers or vice-versa
The below files are required to send a custom email
Make sure your emails working on your server
Step 1: Declare the email template in email_templates.xml file Under app/code/Myvendor/Customemail/etc directory
<?xml version="1.0" encoding="UTF-8"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Email:etc/email_templates.xsd"> <template id="customemail_email_template" label="Email Form" file="customemail.html" type="html" module="Myvendor_Customemail" area="frontend"/> </config>
Note : Here we have declared our email template “customemail.html” with id “customemail_email_template”.
Now let’s create an actual email template HTML file.
Step 2: Create customemail.html under app/code/Myvendor/Customemail/view/frontend/email directory
<!--@subject Sending email from my custom module @-->
{{template config_path="design/email/header_template"}}
<table>
<tr class="email-intro">
<td>
Email: {{var email}}
</td>
<td>
Name: {{var name}}
</td>
</tr>
</table>
{{template config_path="design/email/footer_template"}}
Step 3: Our form is submitting data to post action so let’s create Post.php under app/code/Myvendor/Customemail/Controller directory
<?php namespace Myvendor\Customemail\Controller\Index; use Zend\Log\Filter\Timestamp; use Magento\Store\Model\StoreManagerInterface; class Post extends \Magento\Framework\App\Action\Action { const XML_PATH_EMAIL_RECIPIENT_NAME = 'trans_email/ident_support/name'; const XML_PATH_EMAIL_RECIPIENT_EMAIL = 'trans_email/ident_support/email'; protected $_inlineTranslation; protected $_transportBuilder; protected $_scopeConfig; protected $_logLoggerInterface; protected $storeManager; public function __construct( \Magento\Framework\App\Action\Context $context, \Magento\Framework\Translate\Inline\StateInterface $inlineTranslation, \Magento\Framework\Mail\Template\TransportBuilder $transportBuilder, \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig, \Psr\Log\LoggerInterface $loggerInterface, StoreManagerInterface $storeManager array $data = [] ) { $this->_inlineTranslation = $inlineTranslation; $this->_transportBuilder = $transportBuilder; $this->_scopeConfig = $scopeConfig; $this->_logLoggerInterface = $loggerInterface; $this->messageManager = $context->getMessageManager(); $this->storeManager = $storeManager; parent::__construct($context); } public function execute() { $post = $this->getRequest()->getPost(); // Get form data in $post veriable try { // Send Mail $this->_inlineTranslation->suspend(); // Email sender Name and Email address $sender = [ 'name' => $post['name'], 'email' => $post['email'] ]; $sentToEmail = $this->_scopeConfig ->getValue('trans_email/ident_general/email',\Magento\Store\Model\ScopeInterface::SCOPE_STORE); $sentToName = $this->_scopeConfig ->getValue('trans_email/ident_general/name',\Magento\Store\Model\ScopeInterface::SCOPE_STORE); // customemail_email_template is a template id define in email_templates.xml file $transport = $this->_transportBuilder ->setTemplateIdentifier('customemail_email_template') ->setTemplateOptions( [ 'area' => 'frontend', 'store' => $this->storeManager->getStore()->getId() ] ) ->setTemplateVars([ 'name' => $post['name'], 'email' => $post['email'] ]) ->setFromByScope($sender) ->addTo($sentToEmail,$sentToName) //->addTo('[email protected]','info') ->getTransport(); $transport->sendMessage(); $this->_inlineTranslation->resume(); $this->messageManager->addSuccess('Email sent successfully'); $this->_redirect('your url'); } catch(\Exception $e){ $this->messageManager->addError($e->getMessage()); $this->_logLoggerInterface->debug($e->getMessage()); exit; } } }
Run Below commands
php bin/magento setup:upgrade php bin/magento setup:static-content:deploy -f php bin/magento c:f
Related Post : Create enquiry form in Magento 2