如何从任何 xml 文件中获取邮件内容
How to get the mail content from any xml file
我在我的平均堆栈应用程序中使用 nodemailer。我正在使用它成功发送邮件。
现在我正在尝试根据情况发送邮件。为此,我将邮件内容存储在 xml 页面中,我需要根据 nodemailer 的 html 标签中的关键字获取该邮件内容。
例如:如果用户注册了,那么将通过在 xml 文件中获取注册关键字来发送注册邮件。
XML文件如下图
<?xml version="1.0" standalone="yes"?>
<MailContent>
<registration>
<AfterSignUp>
<html><body><p>
Hello #FirstName #LastName
</p>
<p>
<br/>
You recently registered for #ProjectName.To complete your registration, please <a href="#URL">Click Here </a> to confirm 'your' account.
</p>
<br/>
<p>
Warm Regards,
</p>
<br/>
<p>
System Administrator
</p>
<br/>
<p>
#ProjectName.
</p></body></html></AfterSignUp>
<SignUpSubject>Registration confirmation for #ProjectName</SignUpSubject>
</registration>
<ForgotPassword>
<ForgetContent><html><body><p>
Hello #FirstName #LastName
</p>
<p>
You have requested to have your password reset for your account at #ProjectName.
</p>
<p>
Click the below link to reset your account password
</p>
<p>
<a href="#URL">Reset Password </a>
</p>
<br/>
<p>
Warm Regards,
</p>
<br/>
<p>
System Administrator
</p>
<br/>
<p>
#ProjectName.
</p></body></html></ForgetContent>
<ForgetSubject>#ProjectName password recovery.</ForgetSubject>
</ForgotPassword>
</MailContent>
节点邮件邮件选项如下
let mailOptions = {
from: 'mailid', // sender address
to: 'mailid', // list of receivers
subject:, // Subject line
html: '' // html body
};
在上面如何在 nodemailer 选项中获取 xml 文件内容
我已经通过handlebars和fs渲染html页面解决了这个问题,参考Nodemailer快速解决
我已经创建了 registrationcontent.html 并在节点邮件程序中呈现它,如下所示
var readHTMLFile = function (path, callback) {
fs.readFile(path, { encoding: 'utf-8' }, function (err, html) {
if (err) {
throw err;
callback(err);
}
else {
callback(null, html);
}
});
};
console.log("Sending", user, done);
var smtpConfig = {
host: mailconfig.host,
port: mailconfig.port,
auth: {
user: mailconfig.USER,
pass: mailconfig.PASSWORD
}
};
console.log(smtpConfig);
var transporter = nodemailer.createTransport(smtpConfig);
readHTMLFile(__dirname + '/../MailContents/mail.html', function (err, html) {
var template = handlebars.compile(html);
var replacements = {
FirstName: user.FirstName,
LastName: user.LastName,
URL :`http://sample.com`
};
var htmlToSend = template(replacements);
var mailOptions = {
to: user.Email,
from: 'mail',
subject: 'Registration confirmation',
html: htmlToSend
};
transporter.sendMail(mailOptions, (err) => {
console.log("An e-mail has been sent to with further instructions.");
res.json("Thank you for registering. An Email has been sent to you. Go to registered email inbox to complete the registration process.");
done(err);
});
});
对于快速解决方案,我已经为每封邮件完成了单独的 html,但我只需要使用一个文件 xml 或 html 或包含所有内容的任何其他格式邮件正文在一个文件中,可以通过关键字获取。
Any solution is highly appreciated.
谢谢
我在我的平均堆栈应用程序中使用 nodemailer。我正在使用它成功发送邮件。
现在我正在尝试根据情况发送邮件。为此,我将邮件内容存储在 xml 页面中,我需要根据 nodemailer 的 html 标签中的关键字获取该邮件内容。
例如:如果用户注册了,那么将通过在 xml 文件中获取注册关键字来发送注册邮件。
XML文件如下图
<?xml version="1.0" standalone="yes"?>
<MailContent>
<registration>
<AfterSignUp>
<html><body><p>
Hello #FirstName #LastName
</p>
<p>
<br/>
You recently registered for #ProjectName.To complete your registration, please <a href="#URL">Click Here </a> to confirm 'your' account.
</p>
<br/>
<p>
Warm Regards,
</p>
<br/>
<p>
System Administrator
</p>
<br/>
<p>
#ProjectName.
</p></body></html></AfterSignUp>
<SignUpSubject>Registration confirmation for #ProjectName</SignUpSubject>
</registration>
<ForgotPassword>
<ForgetContent><html><body><p>
Hello #FirstName #LastName
</p>
<p>
You have requested to have your password reset for your account at #ProjectName.
</p>
<p>
Click the below link to reset your account password
</p>
<p>
<a href="#URL">Reset Password </a>
</p>
<br/>
<p>
Warm Regards,
</p>
<br/>
<p>
System Administrator
</p>
<br/>
<p>
#ProjectName.
</p></body></html></ForgetContent>
<ForgetSubject>#ProjectName password recovery.</ForgetSubject>
</ForgotPassword>
</MailContent>
节点邮件邮件选项如下
let mailOptions = {
from: 'mailid', // sender address
to: 'mailid', // list of receivers
subject:, // Subject line
html: '' // html body
};
在上面如何在 nodemailer 选项中获取 xml 文件内容
我已经通过handlebars和fs渲染html页面解决了这个问题,参考Nodemailer快速解决
我已经创建了 registrationcontent.html 并在节点邮件程序中呈现它,如下所示
var readHTMLFile = function (path, callback) {
fs.readFile(path, { encoding: 'utf-8' }, function (err, html) {
if (err) {
throw err;
callback(err);
}
else {
callback(null, html);
}
});
};
console.log("Sending", user, done);
var smtpConfig = {
host: mailconfig.host,
port: mailconfig.port,
auth: {
user: mailconfig.USER,
pass: mailconfig.PASSWORD
}
};
console.log(smtpConfig);
var transporter = nodemailer.createTransport(smtpConfig);
readHTMLFile(__dirname + '/../MailContents/mail.html', function (err, html) {
var template = handlebars.compile(html);
var replacements = {
FirstName: user.FirstName,
LastName: user.LastName,
URL :`http://sample.com`
};
var htmlToSend = template(replacements);
var mailOptions = {
to: user.Email,
from: 'mail',
subject: 'Registration confirmation',
html: htmlToSend
};
transporter.sendMail(mailOptions, (err) => {
console.log("An e-mail has been sent to with further instructions.");
res.json("Thank you for registering. An Email has been sent to you. Go to registered email inbox to complete the registration process.");
done(err);
});
});
对于快速解决方案,我已经为每封邮件完成了单独的 html,但我只需要使用一个文件 xml 或 html 或包含所有内容的任何其他格式邮件正文在一个文件中,可以通过关键字获取。
Any solution is highly appreciated.
谢谢