J'ai essayé d'envoyer un mail une fois qu'une nouvelle ressource a été créée, Et Avant de créer un nouvel utilisateur, il doit vérifier le courrier électronique et le numéro d'employé si l'une des valeurs affichage existe déjà ou il va ajouter une nouvelle ressource et doit envoyer un mail.Node mailer Erreur: impossible de définir les en-têtes après leur envoi
Si l'email et l'emp non ne sont pas identiques, c'est Parfaitement créé la ressource et l'envoi du courrier. Mais si je l'ai essayé même mail ou votre numéro emp am obtenir erreur
Mon erreur:
events.js:182
throw er; // Unhandled 'error' event
^
Error: Can't set headers after they are sent.
at validateHeader (_http_outgoing.js:489:11)
at ServerResponse.setHeader (_http_outgoing.js:496:3)
at ServerResponse.header (D:\hourmint\node_modules\express\lib\response.js:7
30:10)
at ServerResponse.location (D:\hourmint\node_modules\express\lib\response.js
:847:15)
at ServerResponse.redirect (D:\hourmint\node_modules\express\lib\response.js
:885:18)
at D:\hourmint\app\routes.js:298:18
at D:\hourmint\node_modules\mongoose\lib\query.js:2917:18
at <anonymous>
at process._tickCallback (internal/process/next_tick.js:188:7)
Mon émetteur:
var smtpTransport = nodemailer.createTransport({
service: 'Gmail',
auth: {
user: '[email protected]',
pass: 'mypassword'
},
});
Mon code:
app.post('/addresources', isLoggedIn, function(req, res) {
var id = (req.body._id) ? req.body._id : mongoose.Types.ObjectId(0);
var newPwd = new mongo.resource();
var pwd = newPwd.generateHash(req.body.res_password);
var resourceValue = {
'role_id': req.body.role_id,
'privilege_id': req.body.privilege_id,
'res_fname': req.body.res_fname,
'res_lname': req.body.res_lname,
'res_email': req.body.res_email,
'res_password': pwd,
'res_empno': req.body.res_empno,
'res_city': req.body.res_city,
'res_mobile': req.body.res_mobile,
'res_emerno': req.body.res_emerno,
'res_hourlyrate': req.body.res_hourlyrate,
'res_otp': 0,
'res_status': req.body.res_status
};
mongo.resource.findOne({
$or: [{
'res_email': req.body.res_email
}, {
'res_empno': req.body.res_empno
}]
}).exec(function(err, user) {
if (err) throw err;
if (user) {
console.log(user)
if (user.res_email == req.body.res_email && user.res_empno == req.body.res_empno) {
req.flash('error', 'Email And Employee Number Already Exists!!!')
res.redirect('/resources')
} //user already exists with email AND/OR phone.
else if (user.res_email == req.body.res_email) {
req.flash('error', 'Email Id Already Exists!!!')
res.redirect('/resources')
} //no users with that email NOR phone exist.
else(user.res_empno == req.body.res_empno) {
req.flash('error', 'Employee Number Already Exists!!!')
res.redirect('/resources')
}
} else {
mongo.resource.findOneAndUpdate({
'_id': id
}, resourceValue, {
upsert: true,
new: true
}, function(err, response) {
if (err) throw err;
console.log("Resource Added SuccessFully")
console.log(response.res_email)
res.redirect('/resources')
var mainOptions = {
from: '"Niyati" <[email protected]>',
to: response.res_email,
subject: 'Hello ✔', // Subject line
text: 'Hello world ?', // plaintext body
html: '<b>Hello world ?</b>' // html body
};
//console.log("html data ======================>", mainOptions.html);
smtpTransport.sendMail(mainOptions, function(err, info) {
if (err) throw err;
console.log("mail Sent");
// console.log(err);
});
});
}
});
});
Merci d'avoir utilisé cette condition pour afficher un message flash comme Email et numéro d'employé existe déjà, si Changé, cela signifie que je peux montrer que – Vishnu
ajouter && user.res_empno! = Req.body. res_empno à la deuxième condition; add && user.res_email! = req.body.res_email à la dernière condition – spiritwalker
Merci J'ai corrigé l'erreur et aussi en dernière condition dans If (User) Je l'ai changé pour else – Vishnu