cancel
Showing results for 
Search instead for 
Did you mean: 

Custom Email Template for Module

   Did you know you can see the translated content as per your choice?

Translation is in progress. Please check again after few minutes.

Custom Email Template for Module

I'm working on a Module, for which we need a customized version of the new order emails that are sent when an order is placed. What is the proper way to do this for a module? I'm trying to use the Layout Block Argument for template override but I can't seem to get it working for emails.

2 REPLIES 2

Re: Custom Email Template for Module

@steven_werner 

 

First create email_templates.xml file in folder Namespace/Modulename/etc.

 

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Email:etc/email_templates.xsd">
    <template id="order_template" label="Order template" file="customorder.html" type="html" module="Namespase_Modulename" area="frontend"/>
</config>

Now create email template file customorder.html in folder 

Namespace/Modulename/view/frontend/email

 

<!--@subject Email Subject @-->
<!--@vars
{"store url=\"\"":"Store Url",
"skin url=\"images/logo_email.gif\" _area='frontend'":"Email Logo Image"}
@-->
<!--@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:12px;padding:7px 9px 9px 9px;border:1px solid #EAEAEA;">
                                                {{var message}}
                                            </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"}}

In the above code, you can set mail subject using <!--@subject Email Subject @-->

You can send a variable value using {{var message}} 

 

Now Call this template from where you want to call it.

 

If Issue Solved, Click Kudos/Accept As solutions.

Re: Custom Email Template for Module

Thankyou for that. Now I'm trying to find a way to send out an email programatically, that doesn't depend on some frontend or admin action. Do you know of a way? From what I gather, you can't send an email using the API. I'm trying to send out an email automatically when a certain order status is set.