Javascript NodeEmailer不使用Heroku部署
长话短说,我想在我的应用程序中添加一个电子邮件系统,所以我决定使用Nodemailer。在本地主机上一切正常,但一旦我尝试从heroku部署的站点发送电子邮件,它就会失败,出现Javascript NodeEmailer不使用Heroku部署,javascript,node.js,reactjs,heroku,nodemailer,Javascript,Node.js,Reactjs,Heroku,Nodemailer,长话短说,我想在我的应用程序中添加一个电子邮件系统,所以我决定使用Nodemailer。在本地主机上一切正常,但一旦我尝试从heroku部署的站点发送电子邮件,它就会失败,出现500内部错误 我已经用我的gmail帐户做了一些事情,允许它接受不安全的应用程序和其他东西 以下是我的NodeEmailer设置: app.post('/sendMail', (req, res) => { const { name, email, total } = req.body const name
500
内部错误
我已经用我的gmail帐户做了一些事情,允许它接受不安全的应用程序和其他东西
以下是我的NodeEmailer设置:
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)
})
})
这就是我分配env
变量的方式:
module.exports = {
PASS: process.env.PASS
}
如果你还需要其他代码,请告诉我 您没有提到是否在Heroku项目上设置了环境变量。应该可以通过链接
https://dashboard.heroku.com/apps//settings
。Config Vars
部分有一个Reveal Config Vars
按钮-按下时,您可以添加键PASS
,并给它适当的值。您可以尝试将错误记录在三元数之前的行吗?这可能会提供一个堆栈跟踪和对发生了什么的描述wrong@PatNeedhamnull
被返回如果您尝试类似于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 write放入终端,以寻址此代码“heroku logs--source app”的项目。是的,我已经在heroku仪表板上设置了它们
module.exports = {
PASS: process.env.PASS
}