下面是我为nodemailer做的函数-
function mailer(firstName,emailId,password){
var transporter = nodemailer.createTransport({
service: 'gmail',
host: process.env.HOST, // hostname
secureConnection: false, // TLS requires secureConnection to be false
port: process.env.OUTLOOK_PORT, // port for secure SMTP
tls: {
ciphers:'SSLv3'
},
auth: {
user: process.env.EMAILID,
pass: process.env.PASSWORD
}
});
var mailOptions = {
from: process.env.EMAILID,
to: emailId,
subject: 'DM automation tool login details',
text: 'Hi ' + firstName + ','
+ '\n\nThank you for registering.\nYou can now login to the account using the password ' + password +
'\nPlease click on the given link to login to your account http://localhost:8080/login' +
'\n\nNote : Please make sure to reset your password within an hour.'
};
transporter.sendMail(mailOptions, function(error, info){
if (error) {
console.log(error);
} else {
console.log('Email sent: ' + info.response);
}
});
}
在这里,我已经在.env文件中给出了电子邮件id和密码,我正在下面使用这个功能。客户将从我的id获得一封邮件到他的电子邮件id中。
const createCustomer = async(req,res,next) => {
try{
var id = Math.floor(Math.random()*9000000) + 10000000;
var db = req.con;
const data = {
"customerId" : id,
"customerGroupId" : req.body.customerGroupId,
"username" : req.body.username,
"avatar" : req.file.filename,
"email" : req.body.email,
"password" : req.body.password,
"mobileNumber" : req.body.mobileNumber,
};
console.log(data)
const salt = await bcrypt.genSalt(20);
data.password = await bcrypt.hash(data.password, salt);
var pass = data.password;
console.log(pass)
if (!req.file.filename)
return res.status(400).send('No files were uploaded.');
let filename = fs.readdirSync('./src/template-store/temporaryImage/')
console.log(filename)
var file = req.files
let result = db.query(`INSERT INTO customers set ?`,[data],function(err,rows){
if(err){
res.json({
success:0,
message:"An error occurred",
err
})
}
else{
res.json({
success:1,
message:"Inserted",
data: data
})
mailer(req.body.username,req.body.email,req.body.password)
}
})
}
catch(error){
res.json({
message:"An error occured",
error:error
})
}
}
密码是正确的。但我遇到了这个错误-
错误:无效的登录名:534-5.7.9需要应用程序特定的密码。了解更多信息,请访问534 5.7.9 https://support.google.com/mail/?p=invalidsecondfactor f17sm10086327pfk.184-gsmtp at smtpconnection._formaterror(E:\coding backup\brands\node_module\nodemailer\lib\smtp-connection\index.js:774:19)at smtpconnection._actionauthcomplete(E:\coding
如果没有完整的oauth2
身份验证,就很难使用Gmail
进行身份验证。
我会建议您使用SendGrid这样的外部服务来发送生产事务电子邮件。
它甚至有一个不错的免费计划,如果你的应用程序不是巨大的,这不会是一个问题!:)
ps:尽量避免应用程序引导程序之外的“同步”方法,因为它会阻塞整个服务器(这里使用的是readdirsync
)。