0

我正在尝试使用把手在注册后发送给用户的电子邮件 html 模板中呈现 url 以执行确认步骤。

链接组装如下:

var data = {
            user: {
                    email: body.email,
                    token: 'tmpToken',

                    link: '/confirm?email=' + body.email + '&token=' + 'tmpToken'
            },
            appName: 'XYZ'
    };

使用的链接格式如下:

"/confirm?email=x&token=y"

每次我发送电子邮件时,链接都会被篡改并变为:

"confirm/?email=y&token=y",这很烦人。

我在 nodejs 中使用把手来使用把手来引用 html 中的 url

<a href="{{{link_to}}}" style="border: 0;" target="_blank">.

我尝试使用 Handlebars 助手来做到这一点:

handlebars.registerHelper('link_to', function() {
                    return new handlebars.SafeString(handlebars.Utils.escapeExpression(data.user.link));
            });

关于为什么字符串中的问号转换为“/?”的任何想法 ?

4

1 回答 1

0

此代码基于您提供的代码,不会注入/. 所以可能在某个地方发生了其他事情。但这按预期工作:

var Handlebars = require('handlebars');

var source = '<a href="{{{link_to}}}" style="border: 0;" target="_blank">';
var template = Handlebars.compile(source);

var data = {
            user: {
                    email: 'foo@example.com',
                    token: 'tmpToken',

                    link: '/confirm?email=' + 'foo@example.com' + '&token=' + 'tmpToken'
            },
            appName: 'XYZ'
    };

Handlebars.registerHelper('link_to', function() {
    return new Handlebars.SafeString(Handlebars.Utils.escapeExpression(data.user.link));
});
var result = template(data);

console.log(result);  // logs: <a href="/confirm?email=foo@example.com&amp;token=tmpToken" style="border: 0;" target="_blank">
于 2015-05-12T04:29:41.997 回答