在平时使用邮箱发送邮件的时候,我们一般只用来发送文本内容。但是许多企业发送的邮件会有漂亮的邮件模板,并不只是单纯文本组成:
接下来我们会使用node.js的nodemailer库和响应式邮件模板mjml来实现如何定义这种邮件模板以及进行发送。
Nodemailer搭建服务
介绍
Nodemailer 是一个简单易用的 Node.JS 邮件发送模块(通过 SMTP,sendmail,或者 Amazon SES),支持 unicode,你可以使用任何你喜欢的字符集。并且,Nodemailer 具有高度安全性,支持Unicode、表情符号以及html内容。
项目搭建
新建文件夹email-project
,初始化项目:
npm init
安装nodemailer模块:
npm install nodemailer
注意,在发送邮件之前,请确保你的邮箱已经开通了smtp服务。我这里是用的qq的邮箱服务:
有很清楚的操作提示,跟着做就可以。
在email-project
下新建server
文件夹,新建mailer.js
:
const nodemailer = require("nodemailer")
const transporter = nodemailer.createTransport({
service: "qq", // 内置传输发送邮件
port: 465, // 端口
secureConnection: true, // 安全ssl连接
// 授权认证
auth: {
// 用来发送邮件的邮箱
user: "xxxxx@qq.com",
// 不是邮箱登录密码,是smtp授权码
pass: "你的smtp授权码"
}
})
const mailOption = {
from: "xxxxxxx@qq.com", // 发送的邮箱地址
to: "yyyyyyyy@qq.com", // 接收的邮箱地址
subject: "测试邮件!", // 邮箱的标题
text: "测试内容!" // 正文内容
}
// 发送邮件
transporter.sendMail(mailOption, (error, info) => {
if (error) {
return console.log(error)
}
// 成功会返回messageId
console.log("Message send: %", info.messageId)
})
这样,我们成功地运行了邮件服务,向指定的用户发送了一封测试邮件。
编写mjml邮件
介绍
MJML是一种标记语言,设计用于轻松实现一个响应式邮件。它的语义语法使得它容易和简单,而其丰富的标准组件库可以减少你开发时间,并减轻您的邮件代码库。MJML是一个开源的引擎能够将MJML转换成响应式布局的HTML。
在主流邮箱(如qq或163邮箱)中,邮件的编辑,模式可以切换到html模式:
但是,这种编辑模式需要使用非常老的table布局格式,并且兼容性很差。所以我们选择mjml来快速开发响应式邮件。
编写
安装mjml:
npm install mjml
email-project
下新建template
文件夹,新建test.mjml
文件:
<mjml>
<mj-head>
<mj-title>注册成功!</mj-title>
<mj-attributes>