使用Nodemailer+Google SMTP时HTML表格莫名显示逗号问题求助
问题:Nodemailer发送HTML表格时出现多余逗号
使用Nodemailer结合Google SMTP服务器发送邮件,邮件中的HTML表格行之间无端渲染出逗号,表格每行间隔处可见额外的逗号符号。
相关代码如下:
const mailOptions = { from: "xyz@gmail.com", to: "yzx@gmail.com", subject: "Issue Persisting for long time", html: "<h2>These are the issues persisting for long time</h2><ul> " + `<table style="border: 1px solid black;" > <thead> <tr> <th style="border: 1px solid black;">description</th> <th style="border: 1px solid black;">department</th> <th style="border: 1px solid black;">Location</th> <th style="border: 1px solid black;">Date</th> </tr> </thead> <tbody> ${data.map((item) => { return ` <tr> <td>sdfsdf</td> <td>sdfsdf</td> <td>sdfsdf</td> <td>sdfsdf</td> </tr>` })} </tbody> </table>`, }; transporter.sendMail(mailOptions, (error, info) => { if (error) { res.send(error); } else { console.log(mailOptions.text); res.send("Email sent: " + info.response); } });
原因及解决方案
问题出在data.map()的返回值处理上:map()方法会返回一个数组,当在模板字符串中直接插入数组时,JavaScript会自动将数组元素用逗号拼接成字符串,这些逗号就被渲染到了邮件HTML里。
只需要在map()后调用.join(''),将数组转换为无分隔符的字符串即可解决:
${data.map((item) => { return ` <tr> <td>sdfsdf</td> <td>sdfsdf</td> <td>sdfsdf</td> <td>sdfsdf</td> </tr>` }).join('')}
修改后生成的HTML不再包含多余逗号,邮件中的表格就能正常渲染。
内容的提问来源于stack exchange,提问作者Pradeep L
相关产品推荐
相关产品推荐

