如何让nodemailer工作?
我无法弄清楚如何让nodemailer工作,我也为gmail插入了我的凭据,并尝试给我发送一封电子邮件,但它没有给我发任何东西,也没有发生错误,所以我很困惑。这可能是我失踪从我的代码的东西...如何让nodemailer工作?
这里是电子邮件文件:
var nodemailer = require('nodemailer'); var config = require('./config/config');
var smtpTransport = nodemailer.createTransport("SMTP",{
service: "Gmail",
auth: {
user: config.mailer.auth.user,
pass: config.mailer.auth.pass
}
});
var EmailAddressRequiredError = new Error('email address required');
exports.sendOne = function(templateName, locals, fn) {
if(!locals.email) {
return fn(EmailAddressRequiredError);
}
if(!locals.subject) {
return fn(EmailAddressRequiredError);
}
// template
var transport = smtpTransport;
transport.sendMail({
from: config.mailer.defaultFromAddress,
to: locals.email,
subject: locals.subject,
html: html,
text: text
}, function (err, responseStatus) {
if(err) {
return fn(err);
}
return fn(null, responseStatus.message, html, text);
});
};
这里是路线文件发送电子邮件:
exports.forgotPasswordPost = function(req, res, next) { console.log("Forgot Password Post");
if(req.body.email === '') {
console.log('err');
} else {
crypto.randomBytes(48, function(ex, buf) {
var userToken = buf.toString('hex');
console.log(userToken);
User.findOne({email: (req.body.email)}, function(err, usr) {
if(err || !usr) {
res.send('That email does not exist.');
} else {
console.log(usr);
//just call the usr found and set one of the fields to what you want it to be then save it and it will update accordingly
usr.token = userToken;
usr.tokenCreated = new Date();
usr.save(function(err, usr){
// res.redirect('login', {title: 'Weblio', message: 'Your token was sent by email. Please enter it on the form below.'});
console.log(usr);
});
console.log(usr);
var resetUrl = req.protocol + '://' + req.host + '/password_reset/' + usr.token;
console.log(resetUrl);
var locals = {
resetUrl: resetUrl,
};
console.log(locals);
mailer.sendOne('password_reset', locals, function(err, email) {
console.log('email sent');
res.redirect('successPost');
});
}
});
});
}
};
我需要除了我在这里的任何东西?
回答:
我想你需要指向Gmail而不是Gmail。我忘了它是什么,但像gmail.smtp
回答:
sometihng我没有正确识别当地人。
这是为我工作的代码:
var nodemailer = require('nodemailer'); var config = require('./config/config');
var smtpTransport = nodemailer.createTransport("SMTP",{
// host: "smtp.gmail.com",
// secureConnection: true,
// port: 465,
service: "Gmail",
//debug : true,
auth: {
user: config.mailer.auth.user,
pass: config.mailer.auth.pass
}
});
var EmailAddressRequiredError = new Error('email address required');
exports.sendOne = function(template, locals, err) {
var message = {
from: config.mailer.defaultFromAddress,
to: locals.email,
subject: locals.subject,
html: locals.html,
text: locals.text
};
console.log('hitlocal email');
console.log(message);
//console.log(message.to.locals.email);
if(!locals.email) {
// console.log('email err');
}
if(!locals.subject) {
console.log('subj err');
}
// template
var transport = smtpTransport;
// console.log('hit here');
// console.log(transport);
transport.sendMail(message, function(err) {
if(err) {
console.log('email js error');
console.log(err);
}
console.log('Message sent')
//return fn(null, responseStatus.message, html, text);
});
};
这是路线文件:
var locals = { email: 'first last <' + req.body.email + '>',
subject: 'Password Reset',
html: '<p> Please go to the following link to reset your password.' + resetUrl + '</p>',
text: 'Texty Text it'
};
console.log('locals spot here');
console.log(locals.email);
mailer.sendOne('forgotPassword', locals, function(err) {
console.log('email sent');
});
以上是 如何让nodemailer工作? 的全部内容, 来源链接: utcz.com/qa/265552.html