2013-05-13 9 views
9

Ich muss E-Mails von MeteorJS Anwendung senden und ich möchte sie mit Hilfe von HTML-Vorlagen, nicht von "html-in-js" Zeug.
Was ich versucht habe:
1) Verwenden Sie Template.emailTemplate(data), aber Template ist nicht serverseitig definiert.
2) Speichern Sie meine E-Mail-Vorlagen als *.html Dateien unter <app>/server/email/templates Verzeichnis, erhalten Sie ihren Inhalt mit fs.readSync() und dann kompilieren/rendern es mit Meteor eingebauten handlebars Paket.
Dies funktioniert gut in der Entwicklungsumgebung, aber in der Produktion mit gebündelten App fehlschlägt, da *.html Dateien unter server Verzeichnis nicht gebündelt sind. Außerdem wird die Struktur der Verzeichnisse während des Bündelprozesses geändert und relative Pfade zu Vorlagen werden ungültig.
3) Ihre Vorschläge? =)MeteorJS: Generieren von E-Mails von Vorlagen Server-Seite

Antwort

14

Derzeit werden Vorlagen nicht serverseitig unterstützt. Diese Funktionalität kommt. In der Zwischenzeit habe ich ein Paket erstellt, das Sie als nützlich empfinden können, genannt "Lenker-Server", mit dem Sie Lenker auf dem Server verwenden können. Sie können das Paket mit Atmosphäre verwenden oder indem Sie das Projektverzeichnis in Ihren Paketordner kopieren. Hier ein Beispiel:

Beispiel:

my-email.handlebars

Hello, {{name}} 

server.js

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

Hinweis

Keine Vorlagen in der Datei Lenker. Setzen Sie einfach Ihre HTML- und Handlebars-Ausdrücke. Die Datei wird in eine Funktion kompiliert und einer Eigenschaft im Handlebars.templates-Objekt zugewiesen. Der Eigenschaftsname ist der Name der Datei minus der Lenkerverlängerung.

Github

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

+0

Danke! Genau das habe ich gebraucht! – th0r

+0

Ist das HTML-agnostisch? Das heißt, kann ich es auch für reine Textvorlagen verwenden? Vielen Dank! – hsribei

4

Eine weitere Option ist jetzt das Server-Seite ‚private‘ Verzeichnis zu verwenden, um Ressourcen aus und nutzen sie lesen Ressourcen speichern Ihre Anwendung verwenden.

Erstellen Sie das Meteor-Projekt, und erstellen Sie dann ein/private Verzeichnis.

Platzieren Sie Ihre Vorlagen in dort (Sie sollten den Meteor-Lenker-Server-Paket verwenden, anstatt, wenn Sie Lenker benötigen)

lesen in Ihrer Vorlage mit:

Assets.getText(assetPath, [asyncCallback]); 

Natürlich können Sie auch Pattern-Matching tun regex/replace gegen die Zeichenkette, sobald sie geladen ist.

Beispiel:

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

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

Für weitere Informationen über die Funktionalität Vermögen. Meteor Assets