[英]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.