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

如何在EmailJS模板中循环显示购物车数组元素

问题

我有一个可能包含多个元素的购物车商品列表,需要通过EmailJS模板在邮件中展示。直接在模板中显示items时,出现了[object Object],[object Object]的结果。我想实现以下格式的商品信息展示:

商品1名称 x 数量 = 价格
商品2名称 x 数量 = 价格

提交函数代码

const handleSubmit = () => {
    if (!name || !address || !phoneNumber) {
      return;
    }

    // 获取购物车商品列表
    const cartItems = items.map((item) => {
      return {
        name: item.name,
        quantity: item.quantity,
        price: item.convertedPrice.toFixed(2),
      };
    });

    // 计算购物车商品总价
    const totalPriceFormatted = totalPrice.toFixed(2);

    // 准备邮件模板参数
    const templateParams = {
      name: name,
      phoneNumber: phoneNumber,
      address: address,
      items: cartItems,
      totalPrice: totalPriceFormatted,
    };

    console.log("template params", templateParams);

    emailjs
      .send(
        "XXXX",
        "XXXX",
        templateParams,
        "XXXX"
      )
      .then(
        function (response) {
          console.log("SUCCESS!", response.status, response.text);
          
        },
        function (error) {
          console.log("FAILED...", error);
        }
      );
  };

当前待修改的EmailJS模板代码

您收到了一笔新订单

姓名: {{name}}
电话: {{phoneNumber}}
地址: {{address}}

订单详情:

{{items}}

总价: ${{totalPrice}}
解决方案

EmailJS模板支持Handlebars语法,直接用{{#each}}循环遍历items数组就能生成需要的格式。修改后的模板代码如下:

您收到了一笔新订单

姓名: {{name}}
电话: {{phoneNumber}}
地址: {{address}}

订单详情:

{{#each items}}
{{name}} x {{quantity}} = ${{price}}
{{/each}}

总价: ${{totalPrice}}

说明

  • {{#each items}} 标记循环的开始,遍历传入的items数组
  • 循环内部可以直接通过{{name}}、{{quantity}}、{{price}}访问单个商品对象的属性
  • {{/each}} 标记循环的结束

这样就能把每个商品按指定格式渲染出来,不会再出现[object Object]的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 16:17:08