2013-05-13 24 views
9

MeteorJSアプリケーションからメールを送信する必要があります。"html-in-js"ではなく、htmlテンプレートを使用してメールを生成したいと考えています。
私が試したこと:
1)Template.emailTemplate(data)を使用しますが、Templateはサーバー側では定義されていません。
2)*.htmlのファイルを<app>/server/email/templatesディレクトリに保存し、その内容をfs.readSync()で取得し、流星の内蔵handlebarsパッケージを使用してコンパイル/レンダリングします。
*.htmlserverディレクトリのファイルがバンドルされていないため、これは開発環境では問題なく動作しますが、バンドルされたアプリケーションを使用した製品では失敗します。また、バンドル処理中にディレクトリの構造が変更され、テンプレートへの相対パスが無効になります。
3)あなたの提案は? =)MeteorJS:テンプレートから電子メールを生成するサーバー側

答えて

14

現在、テンプレートはサーバー側ではサポートされていません。その機能が実現しています。その間、ハンドルバーを使用してサーバ上でHandbarsを使用できる便利なパッケージが作成されました。雰囲気のあるパッケージを使用するか、プロジェクトディレクトリをパッケージフォルダにコピーします。次に例を示します。

例:

私-email.handlebars

Hello, {{name}} 

server.js

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

ハンドルバーファイルにテンプレートがありません。 htmlとHandlebarsの式を入れてください。ファイルは関数にコンパイルされ、Handlebars.templatesオブジェクトのプロパティに割り当てられます。プロパティ名は、ファイル名からハンドルバー拡張子を引いたものになります。

Githubの

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

+0

ありがとうございます!これはまさに私が必要としていたものです! – th0r

+0

それはHTMLに依存しませんか?つまり、プレーンテキストテンプレートとしても使用できますか?ありがとう! – hsribei

4

別のオプションは、今のうちのリソースを読んで、あなたのアプリケーションが使用するリソースを保存するためにそれらを使用するようにサーバー側のプライベート 'ディレクトリを使用することです。

流星プロジェクトを作成してから、/ privateディレクトリを作成します。テンプレートでそこに

置き、テンプレートを(あなたがハンドルを必要とする場合は、代わりに流星-ハンドル-serverパッケージを使用する必要があります)

読む:

Assets.getText(assetPath, [asyncCallback]); 

もちろん、あなたはまた、パターンマッチングを行うことができますregex /読み込まれた文字列に対して置き換えます。

例:資産の機能の詳細については

var template = Assets.getText(assetPath); // Synchronous 
var username = 'John Doe'; 

template = template.replace('{{username}}', username); 
Email.send({ 
    html: template 
}); 

:。Meteor Assets

関連する問題