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

Node.js中Nodemailer问题:主题显示错位与占位符解析错误

解决Slack+Node.js Nodemailer的主题错位与[object Object]解析问题

问题根源分析

你的代码存在参数传递顺序错误,直接引发了两个异常:

  • 调用sendEmail(client, subject, message)时,传入的第一个参数是client,但sendEmail函数定义的第一个参数是subject,参数完全错位:
    • sendEmail里的subject实际接收的是client对象,所以console.log(subject)输出的是对象(无有效文本内容),模板字符串拼接时就会显示[object Object]
    • sendEmail里的message实际接收的是原本的subject值,导致主题内容错误出现在邮件正文里

修复代码

修改sendEmail的调用逻辑,移除多余的client参数(你的sendEmail函数并未使用该参数):

app.view('your_view_callback_id', async ({ ack, body, client }) => {
    console.log('View Submission Payload:', JSON.stringify(body, null));
    const subject = body.view.state.values.uik1r.sl_input.value;
    const message = body.view.state.values["35GrF"].ml_input.value;
    // 保持参数顺序与函数定义一致,移除多余的client参数
    await sendEmail(subject, message)
    await ack();
    console.log('Acknowledged view submission', body);
});

sendEmail函数本身定义无问题,保持原样即可:

async function sendEmail(subject, message){
    console.log('Subject:', subject);
    console.log('Message:', message);

    const transporter =  nodemailer.createTransport({
        host: 'smtp.gmail.com',
        port: 465,
        secure: true,
        auth: {
            user: process.env.EMAIL_USER,
            pass: process.env.EMAIL_PASSWORD,
        }
    })

    const info = await transporter.sendMail({
          from: "SlackEmail <motty6700@gmail.com>",
          to: "techsupport@fidelitypayment.com",
          subject:`This is just a test ${subject}`,
          text: message
    })
    console.log("message sent:" + info.messageId);
    console.log("Message info:", info);
    console.log("message rejected:" + info.rejected)
}

修复效果验证

修复完成后:

  • console.log(subject)会正确输出从Slack视图获取的主题值(如Testing)
  • 邮件主题将显示This is just a test Testing,不再出现[object Object]
  • 邮件正文会正确显示P200 is working as expected,主题内容不会再错位到正文区域

内容的提问来源于stack exchange,提问作者Yaakov

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 07:34:52