【问题标题】:Nodejs - make email templates dynamicNodejs - 使电子邮件模板动态化
【发布时间】:2016-08-03 04:28:50
【问题描述】:

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

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>My site title</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>My site title</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>My site title</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",

任何人都可以给我一个正确的指导来生成动态电子邮件模板

【问题讨论】:

    标签: javascript node.js html express mean-stack


    【解决方案1】:

    当我必须在电子邮件中动态插入姓名时,我在 html 上使用了字符串格式。这仍然适用于模板。首先,您必须将格式函数添加到字符串原型。

    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}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-20
      • 1970-01-01
      • 2018-10-07
      • 1970-01-01
      • 2016-02-25
      • 2013-10-26
      • 2017-09-22
      • 1970-01-01
      相关资源
      最近更新 更多