【问题标题】:Styling NodeMailer Email样式化 NodeMailer 电子邮件
【发布时间】:2018-12-19 00:42:44
【问题描述】:

下面我引用了 NodeJS 中的 NodeMailer 包中的一个示例。它旨在自动发送电子邮件。如您所见,在 mailOptions 对象中,您可以将 HTML 写入邮件正文。这是我计划使用的一个很棒的功能。

但是,我确实有一个关于如何设置此 HTML 样式的问题。我可以在此 HTML 上使用任何样式选项吗?我将如何处理。 我认为最合乎逻辑的方式是内联样式。

有没有人尝试过这个并取得了成功?

var nodemailer = require('nodemailer');

// create reusable transporter object using the default SMTP transport
var transporter = 
nodemailer.createTransport('smtps://user%40gmail.com:pass@smtp.gmail.com');

// setup e-mail data with unicode symbols
var mailOptions = {
    from: '"Fred Foo ?" <foo@blurdybloop.com>', // sender address
    to: 'bar@blurdybloop.com, baz@blurdybloop.com', // list of receivers
    subject: 'Hello ✔', // Subject line
    text: 'Hello world ?', // plaintext body
    html: '<b>Hello world ?</b>' // html body
};

// send mail with defined transport object
transporter.sendMail(mailOptions, function(error, info){
    if(error){
        return console.log(error);
    }
    console.log('Message sent: ' + info.response);
});

【问题讨论】:

  • 您可以使用其中一种模板生成器,例如 EJS。制作一个模板,为其提供数据并完全按照您的意愿获取 HTML。
  • 如果它是一个基本布局,你可以使用 JavaScript 模板文字来帮助创建一个带有一些内联 css 的简单 html 布局(电子邮件客户端需要很多才能让它们全部正确显示),存储它在 var 中并将其传入。但是,如果它是一个更复杂的设计,内容和数据会定期更改,正如 Vendran 解释的那样,使用 ejs 等模板引擎创建更健壮的布局并将其传入。
  • @VedranMaricevic 虽然 ejs 是必要的。这部分是静态html,还是我仍然可以使用js(类似于jsx)。在这种情况下,使用 es6 字符串文字肯定会更容易。
  • 我无法用精确的代码回答你,因为这个话题太广泛了。相反,我为您提供了一些可以帮助您的提示。

标签: node.js nodemailer


【解决方案1】:

我会给你一些提示,希望你也能在你的项目中实现它。

首先,您需要一个 EJS(周围还有其他模板引擎)。你会在你的项目中这样要求它:

const ejs = require('ejs');

我在一个类中实现了动态加载所需模板,然后为其提供数据。

这就是我的渲染方法(输出 HTML)的样子:

renderTemplate(template, parameters, options) {
        return ejs.render(template, parameters, options);
    }

您可以查看EJS 了解更多详情。 那将是非常基本的实现,应该会让你朝着好的方向前进。稍后,您可以为此添加页眉或页脚。

玩得开心

【讨论】:

    【解决方案2】:

    对于电子邮件样式,您可能希望内联编写样式,或者看起来有一些 NPM 包可以帮助解决这个问题。 (nodemailer-juice),看起来它会获取你的 css 文件并为你内联。

    【讨论】:

      猜你喜欢
      • 2012-06-04
      • 2011-07-29
      • 1970-01-01
      • 2014-05-13
      • 1970-01-01
      • 1970-01-01
      • 2019-09-30
      • 2022-07-27
      • 2012-03-04
      相关资源
      最近更新 更多