繁体   English   中英

如何从NodeJS中的另一个文件读取HTML(用于电子邮件正文)

[英]How to read HTML (for email body) from another file in NodeJS

我是NodeJS的新手。 我开始在“与我们联系”页面上工作,提交该页面后,将向用户发送带有以下HTML的确认电子邮件。

<p>Hello Sujit,</p>
<p>Thank you for approaching us.</p>
<p>We have received your request and our executive will get in touch with you soon.</p>
<p>Thank you.</p>

以下是发送电子邮件的代码:

var mailer = require("nodemailer");

var emailBody = "<HTML above>";

// Use Smtp Protocol to send Email
var smtpTransport = mailer.createTransport("SMTP",{
    service: "#######",
    auth: {
        user: "#########",
        pass: "#######"
    }
});

var mail = {
    from: "######################",
    to: params.email,
    subject: "Welcome user.",
    text: "",
    html: emailBody
}

smtpTransport.sendMail(mail, function(error, response){
    if(error){
        console.log("Mail error:>>");
        console.log(error);
    }else{
        console.log("Message sent: " + response.message);
    }

    smtpTransport.close();
});

当前,我正在使用nodemailer发送此电子邮件,并使用在同一文件-app.js中定义的HTML正文。 到目前为止,一切正常。 但是,有什么方法可以将HTML与“名称”的变量/占位符分开,并放置在其他文件中,以便可以直接管理正文内容? 我可以通过某种方式将正文内容加载到变量emailBody

谢谢。

是!! 创建一个名称为“模板”的文件夹,该文件夹为特定电子邮件创建文本文件。 像welcome.txt。 在welcome.txt中编写类似的代码

<p>Hello #name,</p>
<p>Thank you for approaching us.</p>

然后使用fs模块,您可以读取该文件,如fs.readFile([filepath])并将此值存储在variable中。 就像var mailContent = fs.readFile([filepath])。 然后使用javascript replace函数将#name替换为实际名称。 像mailContent.replace('#name','abcd')

是的,您可以维护带有键值对的JSON结构。

template.json

{

“主题”:“确认邮件”,

“正文”:HTML上方

}

然后,您可以读取需要此JSON或将其作为参数传递给函数。

var template = require('./ templates.json);

var mail = {

from: "######################",
to: params.email,
subject:template.Subject,
text: "",
html: template.Body

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM