我尝试使用Node.js Nodemailer发送电子邮件,但无法正常工作。我不知道如何正确设置它。我使用了下面的代码,但是它不起作用,并且出现错误。我是Nodemailer的新手,所以我无法找出错误。
允许安全性较低的应用:开启
我需要通过Google帐户做什么?请帮助任何人找到解决方案。
app.js:
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.engine('handlebars', exphbs({
defaultLayout: false,
}));
//app.locals.layout = false;
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>Company: ${req.body.company}</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: 'mail.madepartooty.com',
port: 587,
secure: false, // true for 465, false for other ports
auth: {
user: '[email protected]', // generated ethereal user
pass: 'test123' // generated ethereal password
},
tls: {
rejectUnauthorized: false
}
});
// setup email data with unicode symbols
let mailOptions = {
from: '"Nodemailer Contact" <[email protected]>', // sender address
to: '[email protected]', // list of receivers
subject: 'Node 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('Server started...'));
错误:
Error: connect ETIMEDOUT 157.245.154.37:587
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1141:16) {
errno: 'ETIMEDOUT',
code: 'ECONNECTION',
syscall: 'connect',
address: '157.245.154.37',
port: 587,
command: 'CONN'
}
您可以执行以下操作
app.js
var nodemailer = require('nodemailer');
var tech = require('./external.js');
var transporter = nodemailer.createTransport({
service: 'Gmail',
auth: {
user: tech.senderUsername,
pass: tech.senderPassword
}
});
const mailOptions = {
from: tech.senderUsername, // sender address
to: tech.reciverUsername, // list of receivers
subject: 'Subject of your email', // Subject line
html: '<p>Enter your message here.</p>'// plain text body
};
transporter.sendMail(mailOptions, function (err, info) {
if(err)
console.log(err)
else
console.log(info);
});
注意 :
使用Google帐户时,您可能还需要执行以下步骤
启用设置以允许所使用的Gmail帐户使用不太安全的应用。这里是链接:Google不太安全的应用
允许访问“显示解锁验证码选项”(允许访问您的Google帐户)这是链接:Google解锁验证码
有关更多信息,您可以通过sendMailUsingNodemailer
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句