У меня развернуто приложение, и у меня возникла проблема с моей контактной формой. Это приложение React. js с узлом, express и серверной частью mongoDB. Он развернут на Heroku.
Прямо сейчас, когда пользователь вводит свою информацию в контактную форму, он: 1. запускает API.saveLead()
, который запускает fetch()
, попадает на маршрут contact/lead
. Данные сохраняются в базе данных. 2. Затем вызывается API.sendMail()
, который запускает маршрут fetch()
до contact/mail
. Данные упакованы и соответствующим образом отправлены на нужный адрес электронной почты с помощью пакета nodemailer.
Хотя все работает правильно, я регистрирую 500 (Внутренняя ошибка сервера), и я не могу понять, почему. Это ошибка:
API.js:29 POST https://www.agavepv.com/contact/mail 500 (Internal Server Error)
sendMail @ API.js:29
(anonymous) @ index.js:38
Promise.then (async)
t.handleFormSubmit @ index.js:36
(anonymous) @ react-dom.production.min.js:80
w @ react-dom.production.min.js:100
(anonymous) @ react-dom.production.min.js:104
T @ react-dom.production.min.js:124
P @ react-dom.production.min.js:153
C @ react-dom.production.min.js:142
N @ react-dom.production.min.js:166
xn @ react-dom.production.min.js:1676
ue @ react-dom.production.min.js:7257
_n @ react-dom.production.min.js:1741
Nn @ react-dom.production.min.js:1778
Pn @ react-dom.production.min.js:1753
t.unstable_runWithPriority @ scheduler.production.min.js:270
Ql @ react-dom.production.min.js:2794
ie @ react-dom.production.min.js:7242
(anonymous) @ react-dom.production.min.js:1710
Ссылку на мой gitHub можно найти здесь: https://github.com/TheGreekCuban/agavepv
Ссылку на развернутый сайт можно найти здесь: https://www.agavepv.com
ОБНОВЛЕНИЕ
module.exports = {
create: function(req, res) {
db.Lead
.create(req.body)
.then(dbModel => res.json(dbModel))
.catch(err => res.status(422).json(err));
},
//THE CODE BELOW IS WHERE I THE ERROR IS BEING TRIGGERED
send: function(req) {
db.Send(req.body)
.then(response => console.log("Message[2]: ", response))
.catch(err => console.log(err.response));
}
};
ОБНОВЛЕНИЕ [2]
const nodemailer = require("nodemailer")
const Send = (request) => {
console.log("Request2: ", request)
const output = `
<p>Name: ${request.Name}</p>
<p>Phone: ${request.Phone}</p>
<p>Email: ${request.Email}</p>
<p>Message:
<br>
${request.Message}</p>
`
// call the main function which will take care of the nodemailer.
main(output)
}
async function main(output) {
// create reusable transporter object using the default SMTP transport
let transporter = nodemailer.createTransport({
service: "Gmail",
auth: {
user: process.env.email, // generated ethereal user
pass: process.env.password // generated ethereal password
}
});
// send mail with defined transport object
let info = await transporter.sendMail({
from: '"Admin" <[TAKENOUTFOREXAMPLE]@[EXAMPLE].com>', // sender address
to: "[TAKENOUTFOREXAMPLE]@[EXAMPLE].com", // list of receivers
subject: "Interested in working with you!", // Subject line
html: output // html body
});
// Preview only available when sending through an Ethereal account
console.log("Preview URL: %s", nodemailer.getTestMessageUrl(info));
// Preview URL: https://ethereal.email/message/WaQKMgKddxQDoou...
return console.log("Message sent: %s", info.messageId);
// Message sent: <b658f8ca-6296-ccf4-8306-87d57a0b4321@example.com>
}
// Export the model
module.exports = Send;