我使用此脚本发送电子邮件:
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
出了什么问题?
答案 0 :(得分:6)
未处理的Promise拒绝意味着有一些Promise函数没有 .catch 。 Nodemailer的.sendMail函数是一个Promise函数,因此您可以进行回调或像Promise一样使用它。
在您的代码中,您的功能(错误,成功)不在您的.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) {
}
});
答案 1 :(得分:3)
嗯,首先出现的问题是您的电子邮件来自ETIMEDOUT错误。您确定所有参数都正确吗?
其次使用Promise,而不是回调样式,并抓住拒绝。像这样,
smtpTransport
.sendMail(...)
.then(success => console.log('success: ', success))
.catch(error => console.log('error: ', error))
答案 2 :(得分:0)
可能是对GMail的拒绝,请尝试登录:https//www.google.com/setti ngs/security/lesssecureapps并点击“访问不太安全的应用”。 或者使用OAuth。