Übergeben, variable an html-Vorlage in nodemailer
Will ich senden Sie E-Mail mit nodemailer mit html-Vorlage. In dieser Vorlage, die ich brauche, um zu injizieren, einige dynamisch einige Variablen und ich kann wirklich nicht tun. Mein code:
var nodemailer = require('nodemailer');
var smtpTransport = require('nodemailer-smtp-transport');
smtpTransport = nodemailer.createTransport(smtpTransport({
host: mailConfig.host,
secure: mailConfig.secure,
port: mailConfig.port,
auth: {
user: mailConfig.auth.user,
pass: mailConfig.auth.pass
}
}));
var mailOptions = {
from: '[email protected]',
to : '[email protected]',
subject : 'test subject',
html : { path: 'app/public/pages/emailWithPDF.html' }
};
smtpTransport.sendMail(mailOptions, function (error, response) {
if (error) {
console.log(error);
callback(error);
}
});
Sagen wir, ich will in emailWithPDF.html so etwas wie dieses:
Hello {{username}}!
Ich habe festgestellt, dass einige Beispiele, wo war smth like this:
...
html: '<p>Hello {{username}}</p>'
...
aber ich will es in eine separate html-Datei. Ist es möglich?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Was Sie tun können, ist, Lesen Sie die HTML-Datei mit
fs
Modul in Knoten und ersetzen Sie dann die Elemente, die geändert werden sollen, in die html-string mithandlebars
.pug
- Datei, die wir gerade passieren Objekt zuordnen variableWenn Sie Nodemailer 2.0.0 oder höher, aktivieren Sie diese Dokumentation:
https://community.nodemailer.com/2-0-0-beta/templating/ Da Sie erklären, wie man das verwenden von external rendering mit Vorlagen wie:
Geben Sie auch dieses Beispiel:
wo Sie sehen, wie die übergabe von Variablen.
Müssen Sie die
email-templates
Modul: https://github.com/crocodilejs/node-email-templates und eine template-engine Ihrer Wahl.Auch in der Dokumentation von
email-templates
finden Sie, wie Sie Ihre Dateistruktur, damit Sie Ihre Vorlagen gefunden werden kann:Können Sie eine Web-Anfrage zu erstellen ein html-template mit
handlebars
oder mit einem anderen Motor.Eine Vorlage erstellen
Zuerst müssen Sie erstellen eine html-Vorlage für E-Mail-Körper. In diesem Beispiel habe ich einen LENKER
hbs
Datei.Tun Sie Ihre design-Zeug mit html, und fügen Sie die Variablen, die Sie müssen in die Meldung:
Eine Vorlage erstellen, die Anfrage
Müssen Sie den Zugriff auf diese Ansicht. Dann wird eine Anfrage erstellt, wo wir können, senden Sie den Namen der Vorlage als url-parameter an, damit die Anforderung parametrierbar für andere Vorlagen.
Mail-Funktion
Schließlich können Sie die E-Mail senden, nachdem Sie die Anfrage an die Vorlage. Sie können eine Funktion verwenden, wie die folgenden:
<!DOCTYPE html>
für E-Mails?... Es ist ein bisschen mehr als das.Diese kann getan werden, ohne Vorlagen.
Versuchen Sie es so:
Stellen Sie sicher, dass diese nicht in Anführungszeichen gesetzt, aber wieder Zecken.
Für diejenigen, die sich mit Mops als Template-engine
Nur eine schnelle Methode für die Wiedergabe einer Vorlage in einer separaten Datei mit Mops " render-Funktion:
Sehen https://pugjs.org/api/getting-started.html für weitere details. Beachten Sie, dass hierdurch Vorlage re-Zusammenstellung jedes mal, wenn eine Nachricht gesendet wird. Das ist in Ordnung für den gelegentlichen e-mail-Lieferungen. Wenn Sie senden Sie Tonnen von e-mails, die Sie Zwischenspeichern können, das kompilierte template um, dass die Arbeit. Check-out Mops-Dokumentation für das set-up, wenn Sie es brauchen.