我需要從MeteorJS應用程序發送電子郵件,我想用html模板生成它們,而不是通過「html-in-js」東西。
我試過的做法:
1)使用Template.emailTemplate(data)
,但Template
沒有在服務器端定義。
2)將我的電子郵件模板保存爲*.html
目錄下的文件<app>/server/email/templates
,使用fs.readSync()
獲取它們的內容,然後使用流星內置的handlebars
包進行編譯/渲染。
這在開發環境中可以正常工作,但由於*.html
文件在server
目錄下的文件沒有捆綁在一起,因此使用捆綁應用的生產失敗。此外,目錄結構在捆綁過程中發生變化,模板的相對路徑變得無效。
3)您的建議? =)MeteorJS:從模板生成電子郵件服務器端
9
A
回答
14
目前,服務器端不支持模板。該功能即將到來。同時,我創建了一個你可能會發現有用的叫做handlebars-server的包,它允許你在服務器上使用Handlebars。您可以在氣氛中使用軟件包,或將項目目錄複製到軟件包文件夾中。下面是一個例子:
實施例:
MY-email.handlebars
Hello, {{name}}
server.js
Email.send({
html: Handlebars.templates['my-email']({ name: 'Chris' })
});
注意事項
句柄文件中沒有模板。只需把你的html和Handlebars表達式。該文件將被編譯成一個函數並分配給Handlebars.templates對象上的一個屬性。屬性名稱將是文件名稱減去句柄擴展名。
Github上
4
另一種選擇,現在是使用服務器端的「私人」目錄中讀取出的資源,並利用它們來存儲您的應用程序將使用資源。
創建meteor項目,然後創建一個/ private目錄。
Assets.getText(assetPath, [asyncCallback]);
很明顯,你也可以做模式匹配:
將您在那裏的模板中的模板,(你應該使用流星車把-server軟件包,而是如果你需要把手)
閱讀正則表達式/加載後替換字符串。
例如:
var template = Assets.getText(assetPath); // Synchronous
var username = 'John Doe';
template = template.replace('{{username}}', username);
Email.send({
html: template
});
有關資產功能的詳細信息:Meteor Assets
1
流星0.8 *,這裏是另一種解決方案。
相關問題
- 1. 與電子商務款Hybris:電子郵件模板生成
- 2. 服務器端PDF生成和電子郵件
- 3. 需要顯示的電子郵件是從電子郵件模板生成Socialengine
- 4. 電子郵件驗證服務器端
- 5. 電子郵件模板生成器像Mailchmip
- 6. 支持所有郵件服務的HTML電子郵件生成
- 7. 服務器電子郵件服務
- 8. Razor將電子郵件模板作爲電子郵件模板
- 9. Coldfusion服務器:生成未發送電子郵件的問題
- 10. Sugarcrm任務電子郵件模板
- 11. 從服務器端可可自動生成郵件
- 12. Django電子郵件配置Bluehost電子郵件服務器
- 13. HTML電子郵件模板
- 14. RazorEngine模板電子郵件
- 15. AddThis電子郵件模板
- 16. Jade電子郵件模板
- 17. 電子郵件模板ColdFusion9
- 18. ob_start電子郵件模板?
- 19. 電子郵件模板
- 20. Moodle電子郵件模板
- 21. Webpack電子郵件模板
- 22. Rails3 - 電子郵件模板
- 23. 電子郵件模板
- 24. Magento電子郵件模板
- 25. django電子郵件模板
- 26. 電子郵件附件到服務器
- 27. javascript變成玉模板 - 服務器端
- 28. 使用RazorEngine電子郵件模板在身體中生成html
- 29. 預生成本地化的Python電子郵件模板
- 30. 在Struts 2中動態生成電子郵件模板
謝謝!這正是我需要的! – th0r 2013-05-15 07:12:03
是HTML的不可知論?也就是說,我可以將它用於純文本模板嗎?謝謝! – hsribei 2014-08-29 15:59:29