Попробуйте вставить шаблон html в node-mailer, но получите ошибку «ENOENT: такой файл или каталог не открыты» - PullRequest
1 голос
/ 21 апреля 2020

Я использую node-mailer, и он работает нормально, и теперь я пытаюсь добавить шаблон html, но всегда получаю сообщение об ошибке при попытке открыть внешний файл html.

Это мой старый код с встроенный html и он отлично работает!

const sendSwitchBetweenStages = (flowID, flow, stageID, userName) => {
    const message = {
        to: userEmail(flow, stageID),
        subject: titleMessage(stageID),
        text: '',
        html: `
            <div dir="rtl">
              <h1> test </h1>
            </div>
          `
    };
    return emailerService.sendMail(message);
};

Теперь я пытаюсь добавить внешний шаблон:

const sendSwitchBetweenStages = (flowID, flow, stageID, userName) => {
  const template = fs.readFileSync('./index.html',{ encoding:'utf-8' });
    const message = {
        to: userEmail(flow, stageID),
        subject: titleMessage(stageID),
        text: '',
        html: template
    };
    return emailerService.sendMail(message);
};

ошибка: Error: Uncaught (in promise): ENOENT: no such file or directory, open 'index.html'

Индекс. html это на том же root и я не знаю в чем проблема. enter image description here

1 Ответ

0 голосов
/ 21 апреля 2020

Попробуйте дать fs.readFileSyn c абсолютный, а не относительный путь.

В качестве примера:

fs.readFileSync(path.resolve(__dirname, 'release.hbs')).toString('utf8')

Поэтому вы должны попробовать или что-то в этом роде:

fs.readFileSync(path.resolve(__dirname, 'index.html'),{ encoding:'utf-8' });

Кстати, вы должны посмотреть на руль . это действительно хорошо для создания шаблонов. Я использую эту комбинацию nodemailer и handelbars в моем текущем проекте. Прекрасно работает.

...