Frage MeteorJS: Generieren von E-Mails von Vorlagen serverseitig


Ich muss E-Mails von MeteorJS-Anwendung senden und ich möchte sie mithilfe von HTML-Vorlagen, nicht von generieren "html-in-js" Sachen.
Was ich versucht habe zu tun:
1) Verwenden 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, holen Sie ihre Inhalte mit fs.readSync() und dann kompilieren / rendern mit dem eingebauten Meteor handlebars Paket.
Dies funktioniert gut in der Entwicklungsumgebung, scheitert jedoch in der Produktion mit der gebündelten App *.html Dateien unter server Verzeichnis sind nicht gebündelt. 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? =)


9
2018-05-13 20:11


Ursprung


Antworten:


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 ist ein Beispiel:

Beispiel:

meine E-Mail-Handbücher

Hello, {{name}}

server.js

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

Hinweis

Keine Vorlagen in der Lenkerdatei. 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


14
2018-05-14 22:28



Eine weitere Option besteht darin, das "private" Verzeichnis auf der Serverseite zu verwenden, um Ressourcen zu lesen und sie zum Speichern von Ressourcen zu verwenden, die von Ihrer Anwendung verwendet werden.

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

Legen Sie Ihre Vorlagen dort hinein (Sie sollten stattdessen das Meteor-Lenker-Server-Paket verwenden, wenn Sie einen Lenker benötigen)

Lies deine Vorlage mit:

Assets.getText(assetPath, [asyncCallback]);

Selbstverständlich können Sie nach dem Laden auch eine Mustererkennung für regex / replace durchführen.

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 Aktivitätsfunktionalität: Meteor Vermögenswerte


4
2017-11-22 21:00



Meteor 0.8. *, Hier ist eine andere Lösung.

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


1
2018-06-11 19:22