关于通过Xero API指定模板发送带PDF附件发票邮件的问询
问题
我尝试用POST端点 https://api.xero.com/api.xro/2.0/Invoices/aa682059-c8ec-44b9-bc7f-344c94e1ffae/Email 发送指定发票的邮件,但这个端点不支持设置邮件模板、attachPDF等参数。我想知道能不能通过API实现以下请求载荷里的需求:
{ "attachPDF": true, "includeFiles": false, "message": "message", "selectedTemplateID": "c650159c-aa16-44a8-a17f-74f9ec3da916", "sendMeACopy": false, "subject": "Invoice INV-0047", "to": [{ "address": "email@demo.com", "name": "DEMO" }] }
解决方案
你用的这个直接发送发票邮件的端点确实不支持这些参数,但可以通过组合Xero的其他API操作来实现需求:
步骤1:获取发票PDF文件
调用GET /Invoices/{InvoiceID}/PDF端点获取目标发票的PDF二进制数据,保存为临时文件。请求示例:
GET https://api.xero.com/api.xro/2.0/Invoices/aa682059-c8ec-44b9-bc7f-344c94e1ffae/PDF Authorization: Bearer [你的访问令牌] Accept: application/pdf
步骤2:使用EmailMessages API发送带模板和附件的邮件
通过POST /EmailMessages端点构建并发送邮件,这里可以指定邮件模板ID、附加刚才获取的PDF、设置收件人、主题和邮件内容等参数。请求载荷需要调整为符合该端点的格式,大致示例:
{ "To": [ { "Address": "email@demo.com", "Name": "DEMO" } ], "Subject": "Invoice INV-0047", "Body": "message", "BrandingThemeID": "c650159c-aa16-44a8-a17f-74f9ec3da916", "Attachments": [ { "FileName": "Invoice-INV-0047.pdf", "MimeType": "application/pdf", "Content": "[Base64编码的PDF文件内容]" } ], "SendMeACopy": false, "LinkedTransactions": [ { "TransactionID": "aa682059-c8ec-44b9-bc7f-344c94e1ffae", "TransactionType": "ACCREC" } ] }
关键注意点:
BrandingThemeID对应你原来的selectedTemplateID,需确保该ID是有效的品牌模板ID- 附件内容必须转成Base64编码后填入
Content字段 LinkedTransactions用来关联邮件与目标发票,确保两者关联关系正确
额外说明
如果需要更贴近原需求的简化操作,也可以先创建邮件草稿(调用POST /EmailMessages时不立即发送),确认后再触发发送,但核心逻辑还是通过EmailMessages API实现模板和附件的配置。
内容的提问来源于stack exchange,提问作者Martin Zhu
相关产品推荐
相关产品推荐

