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

Xero-node SDK发票邮件问题:requestEmpty结构与指定邮件模板

Xero-node SDK 发票邮件发送问题解答

我正在使用Xero-node SDK自动创建客户发票,功能运行正常,流程末尾希望自动向客户发送发票邮件。官方提供的示例代码如下:

const xeroTenantId = 'YOUR_XERO_TENANT_ID';
const invoiceID = '00000000-0000-0000-0000-000000000000';

const requestEmpty: RequestEmpty = { };

try {
  const response = await xero.accountingApi.emailInvoice(xeroTenantId, invoiceID, requestEmpty);
  console.log(response.body || response.response.statusCode)
} catch (err) {
  const error = JSON.stringify(err.response.body, null, 2)
  console.log(`Status Code: ${err.response.statusCode} => ${error}`);
}

问题1:示例中的requestEmpty在JavaScript中无法正常工作,使用requestEmpty = { }会触发错误(但邮件仍能发送),正确结构是什么?

示例代码是TypeScript语法,其中RequestEmpty是TS的类型注解,纯JavaScript不支持这种语法,这就是报错的核心原因。

正确处理方式分两种场景:

  • 不需要自定义邮件内容:直接省略第三个参数(该参数为可选),或者传递undefined,避免空对象可能引发的SDK校验错误:
    try {
      // 省略第三个参数,直接调用接口
      const response = await xero.accountingApi.emailInvoice(xeroTenantId, invoiceID);
      console.log(response.body || response.response.statusCode)
    } catch (err) {
      const error = JSON.stringify(err.response.body, null, 2)
      console.log(`Status Code: ${err.response.statusCode} => ${error}`);
    }
    
  • 需要自定义邮件内容:使用符合Xero EmailInvoice 结构的对象,可配置字段包括To、Subject、Body等:
    const customEmailBody = {
      To: 'customer@example.com',
      Subject: '您的最新发票',
      Body: '请查收附件中的发票,如有疑问请联系我们'
    };
    
    try {
      const response = await xero.accountingApi.emailInvoice(xeroTenantId, invoiceID, customEmailBody);
      console.log(response.body || response.response.statusCode)
    } catch (err) {
      const error = JSON.stringify(err.response.body, null, 2)
      console.log(`Status Code: ${err.response.statusCode} => ${error}`);
    }
    

问题2:网页端已配置特定邮件模板,能否通过SDK指定发票邮件使用该模板?

目前Xero-node SDK的emailInvoice方法不支持直接指定自定义邮件模板,Xero官方API也未开放该接口能力。发送发票时默认会使用你在Xero网页端设置的「默认发票模板」,而非自定义的特定模板。

替代方案:

  • 在Xero网页端将目标自定义模板设置为默认模板,SDK发送时会自动套用该模板;
  • 若需保留默认模板,可通过SDK获取发票详情,自行基于自定义模板内容构建邮件,使用第三方邮件服务发送,同时在Xero中标记发票为已发送状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 02:45:12