You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 10:20:12