SendGrid V3 Java API邮件主题特殊字符转义异常问题求助
解决SendGrid Java V3 API主题特殊字符转义问题
问题原因
SendGrid的动态模板默认会对传入的dynamicTemplateData变量做HTML转义(用于防范XSS风险),所以&这类特殊字符会被自动转换成&实体,导致显示异常。
解决方案
方案1:直接设置邮件主题(推荐)
如果不需要通过动态模板动态生成主题,直接调用mail.setSubject()设置主题即可,绕开动态模板的转义逻辑:
Personalization personalization = new Personalization(); personalization.addTo("to Email address"); Mail mail = new Mail(); mail.addPersonalization(personalization); mail.setFrom("from email address"); mail.setSubject("Abc & Xyz"); // 直接设置原始主题内容 Request request = new Request(); request.setMethod(Method.POST); request.setEndpoint("mail/send"); request.setBody(mail.build()); sendGrid.api(request);
方案2:禁用模板变量的HTML转义
如果必须通过动态模板数据传递主题,修改你的SendGrid模板中的主题渲染代码,把原来的{{subject}}改成三重大括号{{{subject}}},这样SendGrid会跳过对该变量的HTML转义:
模板修改示例:
原模板主题部分:{{subject}}
修改后:{{{subject}}}
修改后,传入的"Abc & Xyz"就会原样显示,不会被转义成Abc & Xyz。
内容的提问来源于stack exchange,提问作者Ashley
相关产品推荐
相关产品推荐

