My Blog

My WordPress Blog

My Blog

My WordPress Blog

Using HTML Templates

If you need to send dynamic HTML emails, consider using templating engines like Handlebars or EJS. Here’s how you might use Handlebars with Nodemailer:

Install the required packages:

npm install handlebars nodemailer-express-handlebars

Set up Nodemailer with Handlebars:

const nodemailer = require('nodemailer');
const path = require('path');
const hbs = require('nodemailer-express-handlebars');

// Create a transporter object
let transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
    user: process.env.EMAIL_USER,
    pass: process.env.EMAIL_PASS
}
}); // Set up Handlebars transporter.use('compile', hbs({
viewEngine: {
    extName: '.hbs',
    partialsDir: path.resolve('./views/'),
    layoutsDir: path.resolve('./views/'),
    defaultLayout: 'email'
},
viewPath: path.resolve('./views/'),
extName: '.hbs'
})); // Email options let mailOptions = {
from: '"Your Name" <[email protected]>',
to: '[email protected]',
subject: 'Hello with Handlebars',
template: 'email', // Name of the template file (email.hbs)
context: { // Data to pass to the template
    name: 'Recipient',
    message: 'This is a test email using Handlebars!'
}
}; // Send email transporter.sendMail(mailOptions, (error, info) => {
if (error) {
    return console.error('Error sending email:', error);
}
console.log('Email sent successfully:', info.response);
});

Template file (views/email.hbs):

<!DOCTYPE html>
<html>
<head>
&lt;title>{{subject}}&lt;/title>
</head> <body>
&lt;h1>Hello, {{name}}!&lt;/h1>
&lt;p>{{message}}&lt;/p>
</body> </html>
Using HTML Templates

Leave a Reply

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

Scroll to top