我在使用nodemailer发送电子邮件时遇到了一些麻烦。我确信我已正确设置。通过身体解析器进入一些关于折旧代码的帖子,我尝试了他们的解决方案......我想我也做得对。
p.s这里有一个节点noob。
节点版本:4.4.5 快递版:4.13.4 Nodemailer版本:2.4.2
app.js
/*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: 'myemail@gmail.com',
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 <noone@email.com',
to: 'myemail@gmail.com',
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;
contact.pug
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 :(得分:0)
我的猜测是你想要将你发布的路径设为绝对路径。
此:
form(method="post", action="contact/send").col.s12
应该是:
form(method="post", action="/contact/send").col.s12
答案 1 :(得分:0)
糟糕!
router.post('/contact/send', function (res, req)
应该是
router.post('/contact/send', function (req, res)