使用Node.js发送电子邮件时未处理的承诺拒绝

OiR*_*iRc 1 javascript node.js nodemailer

我正在使用此脚本发送电子邮件:

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) {
        }

    }
Run Code Online (Sandbox Code Playgroud)

但是我收到了这个错误:

未处理的承诺拒绝(拒绝ID:9):错误:连接ETIMEDOUT

怎么了?

小智 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) {
    }
});
Run Code Online (Sandbox Code Playgroud)