2016-06-05 2 views
0

nodemailer를 사용하여 전자 메일을 보내는 데 문제가 있습니다. 나는 모든 것을 정확하게 설정했다고 확신합니다. 시체 파서로 감가 상각 된 코드에 관한 몇 가지 게시물을 보았지만, 나는 그들의 해결책을 시도했다 ... 나는 그 일도 올바르게했다고 생각한다.POST 요청 오류 - TypeError : 정의되지 않은 'name'속성을 읽을 수 없습니다.

p.s 여기 노드 놈의 비트.

노드 버전 : 4.4.5 Express 버전 : 4.13.4 Nodemailer 버전 : 2.4.2

/*Application file */ 
'use strict'; 

var express = require('express'); 
var app = express(); //create the Application 
var pug = require('pug'); //require pug for templates 
var nodemailer = require('nodemailer'); 
var bodyParser = require('body-parser'); 

app.use(bodyParser.urlencoded({ extended: true })); 
app.use(bodyParser.json()); 

//require modules 
var blog = require('./routes/blog'); 
var pages = require('./routes/pages'); 
var tutorials = require('./routes/tutorials'); 
var home = require('./routes/home'); 
var contact = require('./routes/contact'); 
var port = 4000; 

app.set('view-engine', 'pug'); 
app.set('views', __dirname + '/templates'); 

//ROUTES// 
app.use('/static', express.static(__dirname + '/public')); 
app.use('/', home); 
app.use('/pages', pages); 
app.use('/blog', blog); 
app.use('/tutorials', tutorials); 
app.use('/', contact); 

//SERVERS// 
//listern on port 
app.listen(port, function() { 
    setInterval(function() { 
     console.log('server is running on port: ' + port); 
    },10000) 
}); 

contact.js

var express = require('express'); 
var router = express.Router(); 
var nodemailer = require("nodemailer"); 

router.get('/contact', function (req, res) { 
    var path = req.path; 
    res.locals.path = path; 
    res.render('contact.pug'); 
}); 

router.post('/contact/send', function (res, req) { 
    var transporter = nodemailer.createTransport({ 
     service: 'Gmail', 
     auth: { 
      user: '[email protected]', 
      pass: 'pass' 
     } 
    }); 

    var conName = req.body.name; 
    var conEmail = req.body.email; 
    var conTopic = req.body.topic; 
    var conMessage = req.body.message; 
    var text = 'New Mail. Name: ' + conName + ' Email: ' + conEmail + ' Topic: ' + conTopic+ ' Message: ' + conMessage; 
    var html = '<p>New Mail.</p><ul><li>Name: ' + conName + '</li><li>Email: ' + conEmail + '</li><li>Topic: ' + conTopic + '</li><li>Message: ' + conMessage + '</li></ul>'; 

    var mailOptions = { 
     from: 'No one <[email protected]', 
     to: '[email protected]', 
     subject: 'Website Submission', 
     text: text, 
     html: html 
    }; 

    transporter.sendMail(mailOptions, function (error, info) { 
     if(error){ 
      console.log(error); 
      res.redirect('/'); 
     } else { 
      console.log('Message sent: ' + info.response); 
      res.redirect('/'); 
     } 
    }); 
}); 

module.exports = router; 

접촉을 app.js. 퍼그

extends ./home-layout.pug 
block content 
    div.section 
     div.container 
      div.row.content-container 
       div.col.s12.center.heading 
        h4 Contact 
        br 
       div.row 
        form(method="post", action="contact/send").col.s12 
        div.row 
         div.input-field.col.s6.form-padding 
          input.validate(name="name", type='text') 
         div.input-field.col.s6.form-padding 
          input#last_name.validate(placeholder='Email', name="email", type='email') 
        div.row 
         div.input-field.col.s6.form-padding 
         input#input_text(placeholder='Topic',type='text', name="topic", length='10') 
        div.row 
         div.input-field.col.s12.form-padding 
         textarea#textarea1.materialize-textarea(placeholder='Message', name="message", length='120') 
        a 
         button(type="submit").waves-effect.waves-light.btn Send 
+0

해야한다는 CONNAME = req.body.name;? 당신이 오류 VAR을 받고이 라인이다 – Dnyanesh

+0

양식 태그를 닫았습니까? –

+0

@Dnyanesh 해당 변수와 연결됩니다. – aleks

답변

0

내 생각 엔 당신이 절대적으로 게시하는 경로를 만들고 싶을 것입니다.

이 :

form(method="post", action="contact/send").col.s12 

은 다음과 같아야합니다

form(method="post", action="/contact/send").col.s12 
0

으악!

router.post('/contact/send', function (res, req) 

router.post('/contact/send', function (req, res) 
관련 문제