[英]Unhandled promise rejection while sending email using Node.js
我正在使用以下脚本发送电子邮件:
var mailer = require('nodemailer');
var smtpTransport = mailer.createTransport({
service: 'gmail',
auth: {
user: 'user',
pass: 'pass'
}
});
smtpTransport.sendMail({
sender: 'user',
to: 'user',
subject: 'Attachment!',
body: 'mail content...',
attachments: [{
filename: 'text3.txt',
path: 'pat/to/file.txt'
}]
}), function(err, success) {
if (err) {
}
}
但我收到此错误:
未处理的承诺拒绝(拒绝ID:9):错误:连接ETIMEDOUT
怎么了?
未处理的Promise拒绝意味着有一些Promise函数没有.catch 。 Nodemailer的.sendMail函数是Promise函数,因此您可以具有回调或像Promise一样使用它。
在您的代码中,功能(err,sucess)在.sendMail函数之外。 这是纠正方法:
smtpTransport.sendMail({
sender: 'user',
to: 'user',
subject: 'Attachment!',
body: 'mail content...',
attachments: [{
filename: 'text3.txt',
path: 'pat/to/file.txt'
}]
},(err, success) => {
if (err) {
}
});
好吧,首先是错误的是,您的电子邮件通话中出现了ETIMEDOUT错误。 您确定所有参数正确吗?
其次,使用Promises,而不是回调样式,并捕获拒绝。 像这样,
smtpTransport
.sendMail(...)
.then(success => console.log('success: ', success))
.catch(error => console.log('error: ', error))
可能是GMail拒绝了,请尝试登录到: https // www.google.com / setti ngs / security / lesssecureapps并打开“ 访问安全性较低的应用程序 ”。 或使用OAuth。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.