使用 Nodemailer 发送 HTML 模板邮件

本文介绍了如何使用 Nodemailer 发送包含 HTML 模板的邮件。通过使用模板字符串和变量插值,您可以动态地生成邮件内容,并将其发送给指定的收件人。文章提供详细的代码示例,并解释了在 Nodemailer 中使用 HTML 模板的关键步骤和注意事项,帮助开发者轻松实现邮件发送功能。

Nodemailer 是一个流行的 Node.js 模块,用于发送电子邮件。它支持多种传输方式,包括 SMTP、Sendmail 和 Amazon SES。 除了发送纯文本邮件,Nodemailer 还允许你发送包含 HTML 内容的邮件,这使得你可以创建更丰富、更具吸引力的邮件。

发送 HTML 邮件

要使用 Nodemailer 发送 HTML 邮件,你需要设置 html 选项,其值为包含 HTML 代码的字符串。例如:

const nodemailer = require('nodemailer');

// 创建一个 transporter 对象
let transporter = nodemailer.createTransport({
  host: 'your_smtp_host',
  port: 587,
  secure: false, // true for 465, false for other ports
  auth: {
    user: 'your_email@example.com',
    pass: 'your_email_password'
  }
});

// 邮件选项
let mailOptions = {
  from: 'your_email@example.com',
  to: 'recipient@example.com',
  subject: 'Hello from Nodemailer',
  html: '

Welcome

That was easy!

' }; // 发送邮件 transporter.sendMail(mailOptions, (error, info) => { if (error) { return console.log(error); } console.log('Message sent: %s', info.messageId); });

这段代码会发送一封包含标题为 "Welcome" 的 H1 标签和一段文字的 HTML 邮件。

使用模板字符串

直接在 JavaScript 代码中拼接 HTML 字符串可能比较繁琐,特别是当 HTML 结构比较复杂时。这时,可以使用模板字符串来更方便地构建 HTML 内容。模板字符串允许你在字符串中嵌入变量,使代码更具可读性和可维护性。

const nodemailer = require('nodemailer');

// 创建一个 transporter 对象
let transporter = nodemailer.createTransport({
  host: 'your_smtp_host',
  port: 587,
  secure: false, // true for 465, false for other ports
  auth: {
    user: 'your_email@example.com',
    pass: 'your_email_password'
  }
});

// 假设我们有一些动态数据
const name = 'John Doe';
const email = 'john.doe@example.com';

// 邮件选项
let mailOptions = {
  from: 'your_email@example.com',
  to: 'recipient@example.com',
  subject: 'Hello from Nodemailer',
  html: `
    

Hello, ${name}!

Your email address is: ${email}

` }; // 发送邮件 transporter.sendMail(mailOptions, (error, info) => { if (error) { return console.log(error); } console.log('Message sent: %s', info.messageId); });

在这个例子中,我们使用了模板字符串(用反引号 `包裹)来构建 HTML 内容。${name}和${email}` 会被实际的变量值替换。

注意事项

  • 安全性: 当从用户输入或其他不可信来源获取数据时,务必对数据进行适当的转义,以防止 HTML 注入攻击。
  • HTML 结构: 确保你的 HTML 代码结构正确,并且符合邮件客户端的兼容性要求。 某些 CSS 样式可能无法在所有邮件客户端中正常显示。建议使用内联 CSS 样式,并尽量避免使用复杂的 CSS 布局。
  • 测试: 在发送大量邮件之前,务必先进行测试,以确保邮件内容显示正确,并且能够成功送达收件人。

总结

使用 Nodemailer 发送 HTML 邮件非常简单。通过结合模板字符串,可以方便地构建动态的邮件内容。 在使用过程中,需要注意安全性、HTML 结构和兼容性,并进行充分的测试。 通过遵循这些建议,你可以轻松地使用 Nodemailer 发送美观、专业的 HTML 邮件。