具体如何编写可以看官方文档或者看后面参考中的博客。这里主要提两点:
- 引入图片使用网络地址,不要使用本地图片
mj-column
外面最好用my-section
包起来- 如果使用vscode,可以安装mjml插件来进行预览
这里生成的模板是这样的:
我们已经编写好了邮件模板,但是nodemailer并不能直接发送mjml。我们需要运行对应的命令将mjml转换为对应的html文件。
新建temp
文件夹,在终端运行命令:
mjml -r ./template/test.mjml -o ./temp/output.html
这样,在temp
文件夹下就会生成对应的html文件。
修改mailer.js
:
const nodemailer = require("nodemailer")
const fs = require("fs")
const transporter = nodemailer.createTransport({
service: "qq",
port: 465,
secureConnection: true,
auth: {
user: "xxxxx@qq.com",
pass: "你的smtp授权码"
const mailOption = {
from: "xxxxxxx@qq.com",
to: "yyyyyyyy@qq.com",
subject: "测试邮件!",
html: fs.readFileSync("./temp/output.html")
transporter.sendMail(mailOption, (error, info) => {
if (error) {
return console.log(error)
console.log("Message send: %", info.messageId)
这样就可以看到,我们成功发送了一封模板邮件。
然而,在业务需求中,我们可能需要根据不同的用户,在邮件中填写不同的内容。比如说我们想要填写接收邮箱相应的用户名,而不是固定的一个名字:
但是mjml只能编写固定的模板,这种时候我们需要引入模板引擎,帮助我们在内容中填入变量值。
这里我们使用handlebars
:
npm install handlebars
handlebars
支持的是mustache语法,改写test.mjml
:
<mj-column>
<mj-text color="#fff" font-size="16px">Dear {{name}}</mj-text>
<mj-text color="#fff" font-size="16px">好叭,其实你什么也没有注册,这只是我发的一个测试邮件模板!</mj-text>
<mj-spacer height="10px"></mj-spacer>
<mj-button background-color="orange" href="https://www.baidu.com">点一下啥也不会发生</mj-button>
</mj-column>
这里双花括号括起来的name就是我们之后要传进去的变量。
修改mailer.js
:
const nodemailer = require("nodemailer")
const handlebars = require("handlebars")
const mjml2html = require("mjml")
const fs = require("fs")
const template = handlebars.compile(fs.readFileSync("./template/test.mjml", "utf8"))
const vars = {
name: "Leo"
const html = mjml2html(template(vars)).html
const transporter = nodemailer.createTransport({
service: "qq",
port: 465,
secureConnection: true,
auth: {
user: "xxxxx@qq.com",
pass: "你的smtp授权码"
const mailOption = {
from: "xxxxxxx@qq.com",
to: "yyyyyyyy@qq.com",
subject: "测试邮件!",
html: html
transporter.sendMail(mailOption, (error, info) => {
if (error) {
return console.log(error)
console.log("Message send: %", info.messageId)
可以看到,我们想要的name参数已经成功传入:
这样,我们就可以通过传入参数的方法,来给邮件修改不同的内容。
# With a different name
npx @mvsde/mailbox create --name < project>
该文件夹默认为当前目录( . ),名称为mailbox-project 。
如果您使用可选的folder参数创建了项目,那么在继续操作之前,请不要忘记使用cd name-of-your-folder更改为新文件cd name-of-your-folder 。
在项目根目录中编辑可选的.mjmlconfig以自定
我的MailerJS的新版本,您可以将其用于电子邮件广告系列。
这个怎么运作
将您的邮递员放在“ victims.txt”文件上。 然后,检查“ configuration.json”文件以编辑所有数据(smtp主机,发件人等),最后,将您的html代码包括在“ scama.html”文件中。
使用以下命令启动文件:node spammerz.js(确保您安装了所有库)
节点邮件程序模板
Nodemailer包装器,可轻松发送HTML模板化电子邮件。
我一直在尝试通过多个HTML模板发送电子邮件时遇到问题。 确实没有任何一种方法可以轻松便捷地解决我的所有需求。 我在节点0.8x的某个地方找到了一个代码片段,该代码片段不起作用,因此我将其改编为该程序包。
通过下载安装,
NPM(推荐)
npm install --save nodemailer-templation
您需要一个外部SMTP服务器或服务来使此工作。 我推荐Mandrill。 它的免费,快速。
使用山作为我们的SMTP服务的示例。
var Templation = require ( 'nodemailer-templation' ) ;
var path = require ( 'path' ) ;
//Create our new new mailer
但是前端这一行, 自身这审美, 这一点一点肝, 真是干不了????
项目总体分为 这两部分.
思路是 请求 天气API, 彩虹屁API, 图床 的数据放入 模板html( template.js) 中, 返回一个HTML字符串, 再将这个字符串用 nodemailer 发送给收件人.
使用 schedule 在每天19.19定时发送
const nodemailer = require("nodemailer");
// create reusable transporter object using the default SMTP transport
// 创建发送邮件对象
let transporter = nodemailer.createTransport({
host: "smtp.qq.com", // 发送方邮箱 node_modules\nodemailer\li
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>
let mailOptions = {
from: 'your_email_address@gmail.com',
to: 'recipient_email_address',
subject: 'Subject of the email',
text: 'Body of the email'
5. 发送电子邮件:
transporter.sendMail(mailOptions, function(error, info){
if (error) {
console.log(error);
} else {
console.log('Email sent: ' + info.response);
替换上述代码中的“ your_email_address”和“ your_email_password”为您的电子邮件地址和密码,将“ recipient_email_address”替换为您要发送电子邮件的收件人的电子邮件地址,将“ Subject of the email”替换为您的电子邮件主题,将“ Body of the email”替换为您的电子邮件正文。
请注意,如果您使用的是Gmail帐户,则需要启用“ 您的帐户的低安全性应用程序访问权限”,以便NodeMailer能够发送电子邮件。
m0_59889760:
解析flex属性:flex:1究竟是什么
前端小王hs: