NodeMailer отправляет HTML письмо с шаблоном из базы данных - PullRequest
0 голосов
/ 17 июня 2020

В моем приложении я установил nodemailer для отправки писем. Приложение создано с использованием Vue и Firebase. Мне нужно изменить шаблоны электронной почты из пользовательского интерфейса, чтобы они сохранялись в базе данных в формате HTML. Внутри этих шаблонов мне нужно иметь возможность использовать динамические c значения.

Это метод создания электронного письма:

 const mailOptions = {
     from: "Test",
     to: req.body.email,
     subject: "New email from" + " " + req.body.email,
     html: req.body.arenile.email_template
  };

Содержимое req.body.arenile.email_template в FireStore:

<p>Date: ${req.body.reservation_date} </p><p>Email: ${req.body.email}</p>

Проблема в том, что переменные не оцениваются и не распечатываются по электронной почте как есть.

Я пробовал:

html: ` ${req.body.arenile.email_template}`

, но это не решает это.

Если я использую:

html: `<p>Date: ${req.body.reservation_date} </p><p>Email: ${req.body.email}</p>`

, он работает нормально. ${req.body.email} печатается как email@example.com

Но:

html: ` ${req.body.arenile.email_template}`

- нет. ${req.body.email} печатается как ${req.body.email}

Я не уверен, нужно ли мне экранировать HTML по-другому или данные запроса оцениваются не в том месте ..

Как я могу исправить?

1 Ответ

0 голосов
/ 17 июня 2020

Я решил так:

var html = req.body.arenile.email_template;
html = html.replace('{{email}}', req.body.email);
html: html

Затем при использовании {{email}} будет напечатано соответствующее значение.

...