0
새 리소스를 만든 후에 메일을 보내려고했습니다. 그리고 새 사용자를 만들기 전에 이메일과 직원 번호를 확인해야합니다. 이미 존재 함을 표시하거나 새로운 자원을 추가하고 메일을 보내야합니다.노드 메일러 오류 : 보낸 후 헤더를 설정할 수 없습니다.
전자 메일 및 emp 번호가 같지 않으면 해당 리소스를 완벽하게 만들고 메일을 보냅니다.
이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)
이 내 송신기 :
이var smtpTransport = nodemailer.createTransport({
service: 'Gmail',
auth: {
user: '[email protected]',
pass: 'mypassword'
},
});
이 내 코드 :
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);
});
});
}
});
});
답장을 보내 주셔서 ... 회신을 보내 주셔서 감사합니다. 전자 메일과 직원 번호가 이미 존재하므로 플래시 메시지를 표시했습니다. 변경된 경우, – Vishnu
에 && user.res_empno! = req.body를 추가 할 수 있습니다. res_empno를 두 번째 조건으로; && user.res_email! = req.body.res_email을 마지막 상태 인 – spiritwalker
에 추가하십시오. 오류 (또한 사용자)가 다른 것으로 변경된 경우 오류 및 최종 절도 조건이 수정되었습니다. if – Vishnu