使用 Node.js 发送电子邮件时未处理的承诺拒绝
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) {
}
}
但是我收到这个错误:
Unhandled promise rejection (rejection id: 9): Error: connect
ETIMEDOUT
怎么了?
未处理的 Promise 拒绝意味着有一些 Promise 函数没有 .catch。 Nodemailer 的 .sendMail 函数是一个 Promise 函数,因此您可以使用回调函数或像 Promise 一样使用它。
在您的代码中,您的 fuction(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) {
}
});
可能是 GMail 拒绝了,尝试登录到:https//www.google.com/setti
ngs/security/lesssecureapps 并开启“访问安全性较低的应用程序”。
或者使用 OAuth。
嗯,首先,您的电子邮件调用出现了 ETIMEDOUT 错误。您确定所有参数都正确吗?
其次使用 Promises 而不是回调样式,并捕获拒绝。像这样,
smtpTransport
.sendMail(...)
.then(success => console.log('success: ', success))
.catch(error => console.log('error: ', error))
我正在使用此脚本发送电子邮件:
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) {
}
}
但是我收到这个错误:
Unhandled promise rejection (rejection id: 9): Error: connect ETIMEDOUT
怎么了?
未处理的 Promise 拒绝意味着有一些 Promise 函数没有 .catch。 Nodemailer 的 .sendMail 函数是一个 Promise 函数,因此您可以使用回调函数或像 Promise 一样使用它。
在您的代码中,您的 fuction(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) {
}
});
可能是 GMail 拒绝了,尝试登录到:https//www.google.com/setti ngs/security/lesssecureapps 并开启“访问安全性较低的应用程序”。 或者使用 OAuth。
嗯,首先,您的电子邮件调用出现了 ETIMEDOUT 错误。您确定所有参数都正确吗?
其次使用 Promises 而不是回调样式,并捕获拒绝。像这样,
smtpTransport
.sendMail(...)
.then(success => console.log('success: ', success))
.catch(error => console.log('error: ', error))