Sometimes we need to show customer name, order id, OTP etc in email subject or body.
Here we will use the following Webkul Hello module to implement this blog.
Step 1 -> Register template in email. Webkul/Hello/etc/email_templates.xml
<?xml version="1.0"?>
<!--
/**
* Webkul Software.
*
* @category Webkul
* @package Webkul_Marketplace
* @author Webkul
* @copyright Copyright (c) Webkul Software Private Limited (https://webkul.com)
* @license https://store.webkul.com/license.html
*/
-->
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Email:etc/email_templates.xsd">
<template id="hello_template" label="Hello World" file="hello.html" type="html" module="Webkul_Hello" area="frontend"/>
</config>
Step 2 -> Load email content in Webkul/Hello/view/frontend/email/hello.html
<!--
/**
* Webkul Software.
*
* @category Webkul
* @package Webkul_Marketplace
* @author Webkul
* @copyright Copyright (c) Webkul Software Private Limited (https://webkul.com)
* @license https://store.webkul.com/license.html
*/
-->
<!--@subject {{trans "Customer has uploaded attachment on %order_id" order_id=$orderId }} @-->
<!--@styles
body,td { color:#2f2f2f; font:11px/1.35em Verdana, Arial, Helvetica, sans-serif; }
@-->
{{template config_path="design/email/header_template"}}
<table cellspacing="0" cellpadding="0" border="0" width="100%">
<tr>
<td align="center" valign="top" style="padding:20px 0 20px 0">
<table bgcolor="#FFFFFF" cellspacing="0" cellpadding="10" border="0" width="650" style="border:1px solid #E0E0E0;">
<tr>
<td valign="top">
<h1 style="font-size:22px;font-weight:normal;line-height:22px;margin:0 0 11px 0;">{{trans "Hello"}},</h1>
</td>
</tr>
<tr>
<td>
<table cellspacing="0" cellpadding="0" border="0" width="650">
<tbody>
<tr>
<td colspan="2" valign="top" style="font-size:24px;padding:7px 9px 9px 9px;border:1px solid #EAEAEA;">
<b>{{trans "Order Id: "}}{{var orderId}}</b>
</td>
</tr>
<tr>
<td colspan="2" valign="top" style="font-size:12px;padding:7px 9px 9px 9px;border:1px solid #EAEAEA;">
{{trans "A Customer %customer_name has uploaded attachment in order %order_id" customer_name=$customer_name order_id=$orderId}}
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td bgcolor="#EAEAEA" align="center" style="background:#EAEAEA;text-align:center;">
<center>
<p style="font-size:12px;margin:0;">
<strong>{{trans "Thank you"}}</strong>
</p>
</center>
</td>
</tr>
</table>
</td>
</tr>
</table>
{{template config_path="design/email/footer_template"}}
Step 3 -> Load template with dynamic variables and send mail.
/**
* Webkul Software.
*
* @category Webkul
* @package Webkul_Marketplace
* @author Webkul
* @copyright Copyright (c) Webkul Software Private Limited (https://webkul.com)
* @license https://store.webkul.com/license.html
*/
/** @var $storeManager \Magento\Store\Model\StoreManagerInterface $storeManager **/
/** @var $transportBuilder \Magento\Framework\Mail\Template\TransportBuilder **/
/** @var $inlineTranslation \Magento\Framework\Translate\Inline\StateInterface **/
$templateOptions = [
'area' => \Magento\Framework\App\Area::AREA_FRONTEND,
'store' => $storeManager->getStore()->getId()
];
$templateVars = [
'orderId' => "#00000009",
'customer_name' => "Share Khan"
];
$from = ['email' => "[email protected]", 'name' => 'Admin'];
$inlineTranslation->suspend();
$to = ['[email protected]'];
$transport = $transportBuilder->setTemplateIdentifier('hello_template')
->setTemplateOptions($templateOptions)
->setTemplateVars($templateVars)
->setFrom($from)
->addTo($to)
->getTransport();
$transport->sendMessage();
$inlineTranslation->resume();

Thanks 🙂

Be the first to comment.