如何使用Nodemailer从表单发送电子邮件

让我们开始说我是节点和JavaScript的初学者。 我有一个使用HTML,CSS和ASP.NET构build的网站。 在我的网站上有一个电子邮件表单设置,我想从ASP.NET转换到Node.js只是为了学习的经验。 我跟着几个不同的教程试图让这个工作。 我一直在提醒你

我已经成功地使我的HTML电子邮件表单接受数据和节点捡起来。 但是试图抓取节点并使用nodemailer以电子邮件的forms发送,而不是那么多。 我注意到几个教程使用“路线”我想避免这个选项,因为它只是超越了我的头。 如果有人能解释如何做到这一点,或为什么不这样做或不能做到这一点? 我会感激。 这是我迄今为止的代码:

使用Javascript /节点:

var nodemailer = require('nodemailer'); var bodyParser = require('body-parser'); var express = require('express'); var app = express(); app.use(bodyParser.urlencoded({ extended: true })); app.post('/contact', function (req, res) { var mailOpts, smtpConfig; //Setup Nodemailer transport, I chose gmail. Create an application-specific password to avoid problems. smtpConfig = nodemailer.createTransport('SMTP', { service: 'Gmail', auth: { user: "<myUser>", pass: "<myPassword>" } }); //Mail options mailOpts = { from: req.query.name + ' &lt;' + req.query.email + '&gt;', //grab form data from the request body object to: '<other user>', subject: 'Website contact form', text: req.query.message }; smtpConfig.sendMail(mailOpts, function (error, response) { //Email not sent if (error) { res.end("Email send failed"); //res.render('contact', { title: 'Raging Flame Laboratory - Contact', msg: 'Error occured, message not sent.', err: true, page: 'contact' }) //console.log("error"); } //Yay!! Email sent else { res.end("Email send successfully"); //res.render('contact', { title: 'Raging Flame Laboratory - Contact', msg: 'Message sent! Thank you.', err: false, page: 'contact' }) //console.log("success"); } }); }); app.listen(8081, function() { console.log('Server running at http://127.0.0.1:8081/'); }); 

HTML:

  <form action="http://127.0.0.1:8087/contact" method="post"> <b>send us a quote</b></br> <input type="text" name="name" id="name" value="Name"></br> <!--input type="text" name="bname" id="bname" value="Business Name"></br>--> <input type="text" name="email" id="email" value="Email Address"></br> <textarea name="message" id="message" cols="30" rows="10">Enter detailed information here</textarea></br> <input type="submit" name="Submit" id="Submit" value="send message"> 

尝试添加

 app.use(bodyParser.json()); 

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

麦克风

 var nodemailer = require('nodemailer'); // Create a SMTP transport object var transport = nodemailer.createTransport("SMTP", { service: 'Hotmail', auth: { user: "username", pass: "password" } }); console.log('SMTP Configured'); // Message object var message = { // sender info from: from, // Comma separated list of recipients to: req.query.to , // Subject of the message subject:req.query.subject //'Nodemailer is unicode friendly ✔', // plaintext body text: req.query.text //'Hello to myself!', // HTML body /* html:'<p><b>Hello</b> to myself <img src="cid:note@node"/></p>'+ '<p>Here\'sa nyan cat for you as an embedded attachment:<br/></p>'*/ }; console.log('Sending Mail'); transport.sendMail(message, function(error){ if(error){ console.log('Error occured'); console.log(error.message); return; } console.log('Message sent successfully!'); // if you don't want to use this transport object anymore,uncomment //transport.close(); // close the connection pool });