首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自联系我部分的node.js电子邮件

问来自联系我部分的node.js电子邮件
EN

Stack Overflow用户
提问于 2019-03-11 10:23:09
回答 1查看 132关注 0票数 0

我刚刚创建了一个静态组合引导网站作为练习,在网站的底部有一个联系我的部分,在那里你可以输入你的名字,电话号码,电子邮件和一些文本。这个网站最初是静态创建的,但在我观看了一些关于如何使用node.js发送电子邮件的youtube视频之后,我在一个单独的项目中对其进行了测试,代码运行正常。因此,我决定将此功能添加到这个静态网站中,我做到了,但我学到的代码不再起作用。我对node.js非常陌生,现在我认为整个想法可能是错误的,因为我可能需要设置不同的文件夹结构/或环境,至少要在一开始就完成这项工作,而不是简单地在上面添加一些东西,这是正确的吗?我提供了我的文件夹结构和app.js文件的图像。app.js被放置在公共文件夹目录中(正如我在研究后发现的那样),并且还添加了一个指向html文件的链接,以便html页面访问JavaScript文件。但是,一旦我将app.js放到公用文件夹中,当我运行node.js app.js时,我就一直收到错误。它似乎不再起作用了。此外,您在下面看到的代码来自我遵循的youtube video,其中联系人表单是它唯一呈现的内容,然而,在我的例子中,联系人表单是html文件的一部分,如果联系人表单是html文件的一部分,我该如何呈现表单。有谁可以帮我?

​

代码语言:javascript
复制
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...'))

​

​

​

EN

回答 1

Stack Overflow用户

发布于 2019-03-11 10:50:03

嘿,你的服务器文件,我能看到的是app.js我必须在根目录(我的意思是根目录在你的文件夹根目录中),而不是在公共文件夹中,公共文件夹是用来服务公共文件的(比如UI相关文件)。因此,从那里移除您的app.js并将其放入文件夹根目录中,然后运行hope。我希望这会有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55094463

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档