如何通过SendGrid/mail Node.js包添加邮件退订链接?
解决SendGrid Node.js Mail包中退订链接不生效的问题
我之前也踩过这个坑!其实核心原因是:你看到的[Unsubscribe]短代码是SendGrid营销活动(Marketing Campaigns)专属的自动解析功能,而@sendgrid/mail这个包是用来发送普通交易邮件的SDK,它本身不会自动识别这个短代码。下面给你两种实用的解决办法:
方法一:手动生成退订链接(适合交易邮件场景)
如果你的邮件是交易类(比如订单通知、密码重置),推荐用这种方式:
- 第一步:先在SendGrid后台创建好退订组(Unsubscribe Group),记下对应的组ID
- 第二步:用SendGrid官方的退订链接模板,把组ID和收件人邮箱动态替换进去,模板格式是:
https://sendgrid.com/unsubscribe/{{group_id}}/{{recipient_email}} - 第三步:在你的邮件HTML里直接插入这个动态生成的链接,比如Node.js代码示例:
const sgMail = require('@sendgrid/mail'); sgMail.setApiKey(process.env.SENDGRID_API_KEY); const toEmail = 'user@example.com'; const unsubscribeGroupId = '12345'; // 替换成你的退订组ID const unsubscribeLink = `https://sendgrid.com/unsubscribe/${unsubscribeGroupId}/${encodeURIComponent(toEmail)}`; const msg = { to: toEmail, from: 'your@example.com', subject: 'Test Email', html: `<p>Thanks for subscribing! Click <a href="${unsubscribeLink}">here</a> to unsubscribe anytime.</p>`, }; sgMail.send(msg);
方法二:切换到营销活动API(适合批量营销邮件场景)
如果你的邮件是批量营销类(比如 newsletter),更推荐用SendGrid的Marketing Campaigns相关API,它会自动解析[Unsubscribe]这类短代码,还能帮你管理订阅状态。当然如果一定要用@sendgrid/mail包,也可以通过配置asm参数关联退订组,但还是不如营销API的自动处理省心。
额外注意事项
- 务必确保你的SendGrid账户已经创建了退订组,否则生成的退订链接会失效
- 按照CAN-SPAM法规要求,所有营销类邮件必须包含清晰的退订入口,交易邮件也建议添加,提升用户体验
内容的提问来源于stack exchange,提问作者James111
相关产品推荐
相关产品推荐

