Nodemailer не работает с 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
}
Если вам нужен какой-то другой код, дайте мне знать!
1 ответ
Вы не упомянули, установили ли вы переменные среды в своем проекте Heroku. Должен быть доступен по ссылке https://dashboard.heroku.com/apps/<your-project-id>/settings
, Config Vars
раздел имеет Reveal Config Vars
кнопка - при нажатии вы можете добавить ключ PASS
и дать ему соответствующее значение.