Я создаю контактную форму и мне нужно добавить вложение, загруженное из формы, и добавить его в шаблон электронной почты.
Я использую Formdata для отправки запроса req, но в Backend, Я не уверен, как проанализировать данные формы и добавить их в приложение "nodeMailer"
. Во внешнем интерфейсе отправьте запрос POST по оси ios и добавьте formData в качестве данных
const sendContactMail = async uploadFile => {
console.log("uploadFile3", uploadFile)
const formData = new FormData()
formData.append("file", uploadFile)
try {
const res = await axios({
method: "post",
url: "/api/contact",
headers: {
"Content-Type": `multipart/form-data`,
},
data: formData,
})
return res
} catch (error) {
return error
}
}
в Backend, обработайте formData и добавьте его в почтовый шаблон
const mailer = ({ file }: MailerPros) => {
const mailOptions = {
from,
to: `${recipientMail}`,
subject: `New message from ${from} (Metrix Website)`,
content,
replyTo: from,
html: `
<h3>Dear ${recipientMail},</h3>
<p>${firstName} ${lastName} (${emailAddress} has send you a <b>${formType}</b> request. His/her contact number is <b>${phoneNumber}</b>. He/she is interested in <b>${interest}</b>.
<br/>Here is his/her meesage:</p>
<p>"${content}"</p>
`,
to: "eric@serindlabs.com",
attachments: [
{
filename: "text.pdf",
contentType: file,
},
],
}
return new Promise((resolve, reject) => {
transporter.sendMail(mailOptions, (error, info) => {
error ? reject(error) : resolve(info)
transporter.close()
})
})
}
export default async (req: any, res: any) => {
const form = formidable({ multiples: true })
form.parse(req, ({ err, fields, files }: any) => {
if (err) {
throw err
}
res.writeHead(200, { "content-type": "application/json" })
res.end(JSON.stringify({ fields, files }, null, 2))
})
const mailerRes = await mailer({ file })
res.send(mailerRes)
}