我刚刚创建了一个静态组合引导网站作为练习,在网站的底部有一个联系我的部分,在那里你可以输入你的名字,电话号码,电子邮件和一些文本。这个网站最初是静态创建的,但在我观看了一些关于如何使用node.js发送电子邮件的youtube视频之后,我在一个单独的项目中对其进行了测试,代码运行正常。因此,我决定将此功能添加到这个静态网站中,我做到了,但我学到的代码不再起作用。我对node.js非常陌生,现在我认为整个想法可能是错误的,因为我可能需要设置不同的文件夹结构/或环境,至少要在一开始就完成这项工作,而不是简单地在上面添加一些东西,这是正确的吗?我提供了我的文件夹结构和app.js文件的图像。app.js被放置在公共文件夹目录中(正如我在研究后发现的那样),并且还添加了一个指向html文件的链接,以便html页面访问JavaScript文件。但是,一旦我将app.js放到公用文件夹中,当我运行node.js app.js时,我就一直收到错误。它似乎不再起作用了。此外,您在下面看到的代码来自我遵循的youtube video,其中联系人表单是它唯一呈现的内容,然而,在我的例子中,联系人表单是html文件的一部分,如果联系人表单是html文件的一部分,我该如何呈现表单。有谁可以帮我?
const express = require('express');
const bodyParser = require('body-parser');
const exphbs = require('express-handlebars');
const path = require('path');
const nodemailer = require('nodemailer');
const app = express();
// View engine setup
app.engine('handlebars', exphbs());
app.set('view engine', 'handlebars');
// Static folder
app.use('/public', express.static(path.join(__dirname, 'public')));
// Body parser middleware
app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json())
app.get('/', (req, res) => {
res.render('contact');
});
app.post('/send', (req, res) => {
const output = `
<p>You have a new contact request</p>
<h3>Contact Details</h3>
<ul>
<li>Name: ${req.body.name}</li>
<li>Email: ${req.body.email}</li>
<li>Phone: ${req.body.phone}</li>
</ul>
<h3>Message</h3>
<p>${req.body.message}</p>
`;
// create reusable transporter object using the default SMTP transport
let transporter = nodemailer.createTransport({
host: 'smtp.gmail.com',
port: 587,
secure: false, // true for 465, false for other ports
auth: {
user: 'jasonking4ever@gmail.com', // generated ethereal user
pass: 'senyang123' // generated ethereal password
},
tls: {
rejectUnauthorized: false
}
});
// setup email data with unicode symbols
let mailOptions = {
from: '"Contact Form" <jasonking4ever@gmail.com>', // sender address
to: 'syan19@live.cn', // list of receivers
subject: 'You have a new contact request', // Subject line
text: 'Hello world?', // plain text body
html: output // html body
};
// send mail with defined transport object
transporter.sendMail(mailOptions, (error, info) => {
if (error) {
return console.log(error);
}
console.log('Message sent: %s', info.messageId);
console.log('Preview URL: %s', nodemailer.getTestMessageUrl(info));
res.render('contact', { msg: 'Email has been sent' });
});
})
app.listen('3000', () => console.log('the server is starting...'))

发布于 2019-03-11 10:50:03
嘿,你的服务器文件,我能看到的是app.js我必须在根目录(我的意思是根目录在你的文件夹根目录中),而不是在公共文件夹中,公共文件夹是用来服务公共文件的(比如UI相关文件)。因此,从那里移除您的app.js并将其放入文件夹根目录中,然后运行hope。我希望这会有所帮助。
https://stackoverflow.com/questions/55094463
复制相似问题