MeteorJS:从模板服务器端生成电子邮件

我需要从MeteorJS应用程序发送电子邮件,我想使用HTML模板生成它们,而不是“html-in-js”的东西。
我试过的:
1)使用Template.emailTemplate(data) ,但Template没有定义服务器端。
2)将我的电子邮件模板保存为<app>/server/email/templates目录下的*.html文件,使用fs.readSync()获取它们的内容,然后使用meteor的内置handlebars包进行编译/渲染。
这在开发环境中工作正常,但由于server目录下的*.html文件没有捆绑在一起,所以在使用捆绑应用程序的生产中失败。 另外,在捆绑过程中,目录的结构发生了变化,模板的相对path变得无效。
3)你的build议? =)

目前,服务器端不支持模板。 该function即将到来。 同时,我创build了一个你可能会觉得有用的名为handlebars-server的包,它允许你在服务器上使用Handlebars。 您可以使用包的气氛,或通过复制项目目录到您的包文件夹。 这里是一个例子:

例:

我-email.handlebars

 Hello, {{name}} 

server.js

 Email.send({ html: Handlebars.templates['my-email']({ name: 'Chris' }) }); 

注意

句柄文件中没有模板。 只要把你的html和Handlebarsexpression式。 该文件将被编译成一个函数并分配给Handlebars.templates对象上的一个属性。 属性名称将是文件的名称减去句柄扩展名。

Github上

https://github.com/eventedmind/meteor-handlebars-server

现在的另一种select是使用服务器端的“private”目录来读取资源,并使用它们来存储应用程序将使用的资源。

创buildmeteor项目,然后创build一个/ private目录。

把你的模板放在那里(如果你需要把手,你应该使用meteor-handlebars-server包)

阅读您的模板:

 Assets.getText(assetPath, [asyncCallback]); 

显然,你也可以在加载之后,对string进行模式匹配正则expression式/replace。

例:

 var template = Assets.getText(assetPath); // Synchronous var username = 'John Doe'; template = template.replace('{{username}}', username); Email.send({ html: template }); 

有关资产function的更多信息: meteor资产

meteor0.8。*,这里是另一个解决scheme。

https://gist.github.com/fpoirier1/534bf5db69ece2c83205