Nodejs – 使电子邮件模板dynamic

我正在开发项目在平均堆栈中,我需要在我的应用程序发送很多电子邮件。 我已经将电子邮件模板作为单独的所有电子邮件模板,但我想在电子邮件模板中制作通用的页眉和页脚。

Route.js

router .route('/api/user/register') .post( //for get email template var fs = require("fs"); var message = fs.readFileSync(basePath + "app/client/views/layout/registerEmailTemplate.html").toString(); ....... ); router .route('/api/user/forgotpassword') .post( //for get email template var fs = require("fs"); var message = fs.readFileSync(basePath + "app/client/views/layout/resetPasswordEmailTemplate.html").toString(); ....... ); router .route('/api/user/accountActivation') .post( //for get email template var fs = require("fs"); var message = fs.readFileSync(basePath + "app/client/views/layout/accountActivationEmailTemplate.html").toString(); ....... ); 

registerEmailTemplate.html

 <!doctype html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" /> <title>Whizbite</title> <style> here all common css </style> </head> <body style="margin:0px;padding:0px"> here registratin html code </body> </html> 

resetPasswordEmailTemplate.html

 <!doctype html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" /> <title>Whizbite</title> <style> here all common css </style> </head> <body style="margin:0px;padding:0px"> here resetpassword html code </body> </html> 

accountActivationEmailTemplate.html

 <!doctype html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" /> <title>Whizbite</title> <style> here all common css </style> </head> <body style="margin:0px;padding:0px"> here account activation html code </body> </html> 

依赖

 "express" => "version": "4.13.4", "mongoose" => "version": "4.4.4", "mongodb" => "version": "2.4.9", "OS" => "ubuntu 14.04 lts 32bit", 

任何机构可以给我一个生成dynamic电子邮件模板的正确指导方针

当我不得不dynamic地将名字插入到电子邮件中时,我在html上使用了string格式。 这仍然可以用于模板。 首先,您必须将格式函数添加到string原型。

 if (!String.prototype.format) { String.prototype.format = function() { var args = arguments; return this.replace(/{(\d+)}/g, function(match, number) { return typeof args[number] != 'undefined' ? args[number] : match ; }); }; } 

然后,您可以将模板注入您的电子邮件。

 router .route('/api/user/register') .post( //for get email template var fs = require("fs"); var header = fs.readFileSync('pathToHeader'); var footer = fs.readFileSync('pathToFooter'); var message = fs.readFileSync(basePath + "app/client/views/layout/registerEmailTemplate.html").toString(); var formattedMessage = string.format(message,header,footer); ); 

你的电子邮件文件看起来像

 {0} here resetpassword html code {1}