Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

143
Visualizações
Inyección de etiquetas HTML de Nodemailer

Esta es la primera vez que hago una pregunta en StackOverflow.

Estoy usando Nodemailer para enviarme un correo electrónico cuando alguien ha llenado un formulario. Estoy usando ExpressJS para manejar la solicitud POST.

Todo parece estar bien ahora, excepto cuando traté de inyectar etiquetas HTML en el formulario. ¡Podría jugar con el correo html como quisiera!

Este es mi código para el sendMail

 transport.sendMail({ from: `Form Submittion <${myEmailAddress}>`, to: myOtherEmailAddress, subject: "New Form Submitted", text: `Hi, \nNew Form Submitted!\n${req.body.request}`, html: `<h1>Hi, <br />New Form Submitted!</h1> <h2>${req.body.request}</h2>`, });

Cuando req.body.request tiene etiquetas HTML, puede afectar la apariencia de mi correo electrónico, lo cual no me gusta.

¿Hay alguna manera de sanear el req.body.request del nodemailer o express o debo confiar en otras herramientas? Si es así, ¿podría sugerir algunas herramientas para hacer el trabajo?

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

  • instalar multer
  • Analice los campos de la solicitud, utilizando multer
  • Páselo como argumento a una función que devuelve la cadena de plantilla HTML para el correo electrónico.
  • enviar el correo electrónico

 const express = require("express"); // for email const nodemailer = require("nodemailer"); // for handling the form submission const multer = require('multer'); const upload = multer(); const app = express(); // upload.none() for only accepting text fields from form submission // refer : http://expressjs.com/en/resources/middleware/multer.html app.post("/submit", upload.none(), async (req, res) => { // here name is field name at your html form const name = req.body.name; const email = req.body.email; let transporter = nodemailer.createTransport({ host: "your-smtp-server", port: 587, secure: false, // true for 465, false for other ports auth: { user: "your-crendentials", // generated ethereal user pass: "your-crendentials", // generated ethereal password }, }); const info = await transporter.sendMail({ from: '"Sender name" <foo@example.com>', // sender address to: email, subject: "New message from " + name, text: `Hi, \nNew Form Submitted!\n${name}`, html: getHTMLTemplateString(name), }); console.log("Message sent: %s", info.messageId); return res.send({ success: true, message: "Email sent successfully", }) }); function getHTMLTemplateString(name) { // add your css and html inside the string below return ` <h1>Hi ${name}, <br />New Form Submitted!</h1> <p>Thank you for submitting the form!</p> <p>We will get back to you as soon as possible.</p> `; } app.listen(3000, () => { console.log("Server started on port 3000"); });

Dependencias añadidas: multer

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda