首页 > 解决方案 > 如何将html页面作为nodemailer的内容发送

问题描述

在我的应用程序中,我使用 nodemailer 发送电子邮件。我想向收件人发送 html 页面内容(有一些信息)

怎么做?请任何人帮助我

标签: node.js

解决方案


您可以做的是使用节点中的 fs 模块读取 HTML 文件,然后使用把手替换 HTML 字符串中要更改的元素

var nodemailer = require('nodemailer');
var smtpTransport = require('nodemailer-smtp-transport');
var handlebars = require('handlebars');
var fs = require('fs');

var readHTMLFile = (path, callback) => {
  fs.readFile(path, { encoding: 'utf-8' }, function (err, html) {
    if (err) {
      throw err;
    }
    else {
      return callback(null, html);
    }
  });
};

smtpTransport = nodemailer.createTransport(smtpTransport({
  host: mailConfig.host,
  secure: mailConfig.secure,
  port: mailConfig.port,
  auth: {
    user: mailConfig.auth.user,
    pass: mailConfig.auth.pass
  }
}));

readHTMLFile(__dirname + 'app/public/pages/emailWithPDF.html', function (err, html) {
  var template = handlebars.compile(html);
  var replacements = {
    username: "John Doe"
  };
  var htmlToSend = template(replacements);
        var mailOptions = {
            from: 'my@email.com',
            to : 'some@email.com',
            subject : 'test subject',
            html : htmlToSend
         };
        smtpTransport.sendMail(mailOptions, (error, response)=> {
            if (error) {
                console.log(error);
                callback(error);
            }
        });
    });

推荐阅读