【发布时间】:2018-04-03 11:26:19
【问题描述】:
我有一个简单的 node.js 应用程序,它使用 express static 和 nodemailer 以及一个 POST 表单,该表单将填写的字段通过电子邮件发送给我自己。我的问题很简单,我对 Node 还很陌生,所以我找不到解决问题的方法。
我的第一个问题是我找不到将所有表单数据放入电子邮件文本的方法。下面,我试图将我的表单数据存储在 JSON 中并在电子邮件文本中调用它,但它不起作用。只有当我只对文本使用一个变量(例如 req.body.name)时,它才对我有效。如何在电子邮件中一起格式化我的数据?
我的第二个问题是我可以在电子邮件发送后找到处理应用程序的方法。我希望它重定向到成功页面,如标记行所示,但它不起作用。相反,该页面转到 /reqform 并显示一条错误消息,指出 success.html 不存在(它与我的 html 文件位于同一公用文件夹中)。我相信问题在于我的 sendFile 使用情况,但我不确定。
app.post('/reqform', urlencodedParser, function (req, res) {
response = {
name: req.body.name,
email: req.body.email,
phone: req.body.phone
};
var mailContent = {
from: 'myemail@gmail.com',
to: 'myemail@gmail.com',
subject: 'Service Request From req.body.name',
text: response //*** Problem #1
};
transporter.sendMail(mailClient, function (error, info) {
if (error) {
console.log(error);
} else {
res.sendFile("success.html"); //** Problem #2
}
});
})
非常感谢任何帮助。谢谢!
【问题讨论】:
-
test 可能需要一个字符串,而您正在向它发送一个对象。那格式不好。电子邮件很麻烦,因为确保它们被格式化通常意味着丑陋的代码。至于另一个,你是如何公开你的公共目录的?
-
您是否安装了body parser?这可能比手动干扰
urlencodedParser更容易。 -
有没有办法发送一个包含所有三个变量的字符串?我的公共目录包含我的 html 文件都在同一级别。我将尝试身体解析器,只是现在我只是使用最低限度来使其工作。
标签: node.js express nodemailer