使用Nodemailer发送PDF附件邮件时后端buffer接收为空求助
问题:使用Nodemailer发送带PDF附件邮件时,后端接收前端传入的Buffer为空
我尝试用Nodemailer发送带有PDF附件的邮件,前端请求中已传入Buffer,但后端接收时该部分内容为空。有人遇到过这类问题吗?
我也尝试过通过以下方式发送随机.txt附件:
{ // utf-8 string as an attachment filename: "text1.txt", content: "hello world!", }
前端请求代码
async function fetchOffer() { if (file) { const buffer = await blob.arrayBuffer(); if (buffer) { console.log('buffer', buffer); const response = fetch(`${linkUrl()}/truckcovers-offer-email`, { method: "POST", body: JSON.stringify({ filename: file.name, file: buffer}) headers: { 'Accept': 'application/json', 'Content-Type': 'application/pdf' }, }, setLoading(true)).then( (response) => (response.json()) ).then((response) => { if (response.status === 'success') { console.log('response: ' + response); setVisible(true); } else if (response.status === 'fail') { console.log("Message failed to send.", response); } }); setLoading(false); return response; } } }
后端处理代码
app.post('/truckcovers-offer-email', async (req, res, next) => { const buffer = await req.body.buffer; let transporter = nodemailer.createTransport({ host: process.env.HOST_EMAIL, port: process.env.PORT_EMAIL, auth: { user: process.env.USER_EMAIL, pass: process.env.PASSWORD_EMAIL } }); const mailOptions = { from: 'test@test.com', subject: 'Offer', to: process.env.USER_EMAIL, html: `<h1>Offer from client</h1>`, attachments: [ { filename: req.body.filename, content: Buffer.from(JSON.stringify(req.body.file), "utf-8") } ] }; transporter.sendMail(mailOptions, (err, result) => { if (err) { console.error(err); res.status(400).json({ "message": err }) } else { res.status(200).json({ 'status': "success", 'message': 'Email sent:' + result.response }); } }); });
相关截图:

内容的提问来源于stack exchange,提问作者Santiya
相关产品推荐
相关产品推荐

