2017-06-28 73 views
0

我使用這個腳本用於發送電子郵件:未處理的承諾拒絕使用時發送電子郵件節點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

有什麼不對?

在此先感謝

回答

4

未處理的承諾拒絕意味着有不有.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) { 
    } 
}); 
2

那麼,首先出現ETIMEDOUT錯誤來自您的電子郵件調用的錯誤。你確定你有所有的參數是正確的嗎?

其次使用Promise,而不是回調風格,並捕獲拒絕。像這樣,

smtpTransport 
    .sendMail(...) 
    .then(success => console.log('success: ', success)) 
    .catch(error => console.log('error: ', error)) 
相關問題