He estado creando un sitio web comercial de una página con un formulario de contacto que se envía al correo electrónico de la empresa (usando Nodemailer).
He logrado que esa parte funcione; sin embargo, después de que el usuario envía el formulario, no hay forma de saber si se envió correctamente o no. ¿Hay alguna manera de implementar esto? (¡Soy bastante nuevo en el desarrollo web!)
Hasta ahora he estado siguiendo este tutorial: https://lo-victoria.com/how-to-build-a-contact-form-with-javascript-and-nodemailer
¡Cualquier ayuda es muy apreciada!
Código del lado del cliente
const form = document.getElementById("contactForm"); const formEvent = form.addEventListener("submit", (event) => { event.preventDefault(); let mail = new FormData(form); sendMail(mail); form.reset() }) const sendMail = (mail) => { fetch("/", { method: "post", body: mail, }).then((response) => { return response.json(); }); };Código de correo de nodo
const transporter = nodemailer.createTransport({ service: "gmail", auth: { user: process.env.EMAIL, pass: process.env.PASS, }, }); transporter.verify(function (error, success) { if (error) { console.log(error); } else { console.log("Server is ready to take our messages"); } }); app.post("/send", (req, res) => { let form = new multiparty.Form(); let data = {}; form.parse(req, function (err, fields) { console.log(fields); Object.keys(fields).forEach(function (property) { data[property] = fields[property].toString(); }); const mail = { sender: `${data.name} <${data.email}>`, to: process.env.EMAIL, subject: data.subject, text: `${data.name} <${data.email}> \n${data.message}`, }; transporter.sendMail(mail, (err, data) => { if (err) { console.log(err); res.status(500).send("Something went wrong."); } else { res.status(200).send("Email successfully sent to recipient!"); } }); }); });