2017-08-27 130 views
0

我想從我的Nodejs應用程序發送電子郵件。我爲此使用包Nodemailer。這是我用來發送電子郵件的代碼;Nodejs,使用Bluehost SMTP使用Nodemailer發送的電子郵件沒有被髮送,沒有錯誤

let smtpTransport = nodemailer.createTransport({ 
    host: "box***.bluehost.com", 
    port: 465, 
    secure: true, 
    auth: { 
    user: <[email protected]>, 
    pass: <password> 
    } 
}); 

let sendResetPasswordEmail = (user, token) => { 
    let mailOptions = { 
     to : user.workEmail, 
     subject : "Reset your password", 
     text : _generateResetPasswordEmail(user, token) 
    } 

    smtpTransport.sendMail(mailOptions, (error, response) => { 
     if(error){ 
      console.error(error); 
     } else { 
      console.log("Message sent: " + response.message); 
      console.log(response); 
     } 
    }); 
} 

smtpTransport.sendMail功能的回調,誤差爲空,這是響應我得到

{ 
    accepted: [ '[email protected]' ], 
    rejected: [], 
    response: '250 OK id=short-hyphenated-alpha-numeric-id>', 
    envelope: { from: '', to: [ '[email protected]' ] }, 
    messageId: '<[email protected]>' 
} 

一切都在響應似乎罰款,狀態代碼是250,但[email protected]根本不會接受這封電子郵件。此外,我無法在我的bluehost電子郵件信息中心的「發送」列表中找到它。有什麼可能會出錯。

回答

1

對於您從地址中缺少的郵件選項。請確保您的地址域名必須正確設置必要的dkim和spf記錄,否則大多數郵件收件人都會將郵件發送給垃圾郵件或完全反彈。

let mailOptions = { 
     to : user.workEmail, 
     from : "[email protected]", 
     subject : "Reset your password", 
     text : _generateResetPasswordEmail(user, token) 
    } 
+0

如果郵件已被退回或發送到垃圾郵件,我會得到250OK嗎? –

+0

通常250表示收件人服務器正在接受郵件,但由於某種原因未將郵件給予收件人。您的smtp提供商除此之外無法查看任何內容。但是,如果它彈起,你應該得到一個反彈錯誤代碼。對於垃圾郵件,它會給250確定,所以你需要正確設置你的密鑰。 –

+0

嘗試在聲明'createTransport'時添加'debug:true'。我從bluehost smtp服務獲得了這條消息:'220-我們不授權使用此係統傳輸未經請求的和/或批量電子郵件。「 – oschvr

0

我遇到了同樣的問題。我可以通過在createTransport對象上添加name屬性來解決這個問題。名稱:「mail.yourdomain」。如果您未看到電子郵件,請檢查垃圾郵件文件夾。這是從https://github.com/nodemailer/nodemailer/issues/677 得到我希望這可以幫助。

相關問題