繁体   English   中英

Nodemailer无法使用Heroku部署

[英]Nodemailer Not Working With Heroku Deployment

长话短说,我想在我的应用程序中添加一个电子邮件系统,所以我决定使用Nodemailer。 在localhost上一切正常,但是一旦我尝试从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
}

如果您还有其他代码,请告诉我!

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM