添加.ics附件后Mailjet邮件模板失效,仅附件发送的问题求助
问题解决思路
- 核心问题:你当前把日历内容作为邮件的主体内容传入,这会覆盖邮件模板的内容,导致邮件被识别为纯日历类型,完全忽略模板里的文本、图片等元素。
- 正确做法:将.ics文件作为附件添加到邮件中,而非替换邮件主体内容。
调整后的代码示例
假设你的sendMailjetTemplate方法支持传入附件参数(若当前方法不支持,需扩展实现以处理附件):
const event = await this.calendarService.getEventForDelivery(deliveryId); // 将日历内容作为附件传入,保留模板主体内容 await this.sendMailjetTemplate('4069368', d.email, [], { ASN: d.identifier, attachments: [{ ContentType: 'text/calendar', Filename: 'delivery-schedule.ics', Base64Content: Buffer.from(event).toString('base64') // 转为Base64编码(MailJet要求附件采用该格式) }] });
关键说明
- 邮件模板的原有内容(文本、图片)需通过
sendMailjetTemplate的内容参数保留,或维持模板默认内容,不要用日历内容替换主体。 - MailJet API要求附件内容必须是Base64编码字符串,因此需要把生成的ICS文本转换为对应格式。
- 如果你的
sendMailjetTemplate方法未暴露附件参数,需修改方法实现,在调用MailJet API时添加Attachments字段,传入附件数组。
内容的提问来源于stack exchange,提问作者bchoffart
相关产品推荐
相关产品推荐

