【问题标题】:Nodemailer Not Working With Heroku DeploymentNodemailer 不适用于 Heroku 部署
【发布时间】:2018-12-18 22:38:32
【问题描述】:

长话短说,我想在我的应用程序中添加一个电子邮件系统,所以我决定使用 Nodemailer。在本地主机上一切正常,但是一旦我尝试从我的 heroku 部署站点发送电子邮件,它就会失败并出现 500 内部错误。

我已经用我的 gmail 帐户完成了这些工作,以允许它接受不安全的应用程序和内容。

这是我的 nodemailer 设置:

app.post('/sendMail', (req, res) => {
  const { name, email, total } = req.body
  const nameCheck = name
    .split(' ')
    .map(word => word.charAt(0).toUpperCase() + word.slice(1))
    .join(' ')

  const output = `
    <p>Thanks for shopping with us, ${nameCheck}.</p>
    <p>Your Total is $${total}</p>
    <hr />
    <p>Gabriel Pozo - React Cart Developer / Owner</p>
    <a href="https://reactshoppingcart1.herokuapp.com/">Shop</a>
  `

  const transporter = nodemailer.createTransport({
    service: 'gmail',
    port: 25,
    secure: false,
    auth: {
      user: 'beyondutraining@gmail.com', 
      pass
    },
    tls: { rejectUnauthorized: false }
  })

  const mailOptions = {
    from: '"Gabriel" <beyondutraining@gmail.com>',
    to: email,
    subject: 'Your Order',
    html: output
  }

  transporter.sendMail(mailOptions, (error, info) => {
    error ? res.sendStatus(500) : res.sendStatus(200)
  })
})

这就是我从 React 提供静态文件的方式:

if (process.env.NODE_ENV === 'production') {
  app.use(express.static('client/build'))

  app.get('*', (req, res) => {
    res.sendFile(path.resolve(__dirname, 'client', 'build', 'index.html'))
  })
}

这就是我分配env 变量的方式:

module.exports = {
  PASS: process.env.PASS
}

如果你想要任何其他代码,请告诉我!

【问题讨论】:

  • 您可以尝试在三元组之前记录错误吗?这可能会提供堆栈跟踪和错误描述
  • @PatNeedham null 被返回
  • 如果你尝试类似let statusCode = error ? 500 : 200 然后res.sendStatus(statusCode)。可能即使error 有一个空值,第一种情况仍在评估中。
  • 不,仍然会出现该错误。我意识到当我像这样编写代码时:if (error) res.sendStatus(500) else res.sendStatus(200) 它挂起而不是立即失败,所以这可能与我的 sendMail 函数的编写方式有关。另外,如果这样写:if (error) res.sendStatus(500) res.sendStatus(200) 它通过但不发送电子邮件。
  • 你解决了这个问题吗?我有同样的问题。要查看错误正在抛出 heroko,请在解决项目的终端中写入此代码“heroku logs --source app”。

标签: javascript node.js reactjs heroku nodemailer


【解决方案1】:

您没有提到您是否在 Heroku 项目中设置了环境变量。它应该可以通过链接https://dashboard.heroku.com/apps/&lt;your-project-id&gt;/settings 访问。 Config Vars 部分有一个 Reveal Config Vars 按钮 - 按下时,您可以添加键 PASS 并为其赋予适当的值。

【讨论】:

  • 是的,我已将它们设置在我的 heroku 仪表板上
猜你喜欢
  • 2021-04-28
  • 1970-01-01
  • 2021-06-03
  • 2018-10-10
  • 2020-02-19
  • 2022-01-24
  • 1970-01-01
  • 2020-12-16
相关资源
最近更新 更多