Node.js通过Amazon SES发邮件Adaptive Card不显示问题咨询
修复方案
通过Amazon SES这类第三方邮件服务发送Outlook自适应卡片不需要做服务层面的特殊配置,卡片无法渲染的核心原因是你的邮件内容不符合Outlook的解析规则,从你贴的原始邮件源码可以直接定位到以下问题:
- script标签语法错误:你的卡片脚本标签开头写为
<script = type="application/adaptivecard+json">,script标签名和type属性之间多了一个冗余等号,Outlook的解析器无法识别这个标签的内容类型,会直接跳过整个块不做解析。源码里出现的=3D是quoted-printable编码对=符号的正常转义,不需要处理,只需要删掉标签里多余的那个等号,写成标准的<script type="application/adaptivecard+json">即可。 - 必填字段originator为空:自适应卡片结构中的
originator是强制校验字段,必须填写你提前注册获得的可操作消息提供方ID,留空的卡片会被Outlook直接判定为不可信内容,拒绝渲染。你用官方设计工具测试时能正常展示卡片,是因为设计器自动填充了官方公用的测试用originator值,不需要手动填写。 - 发件域名认证不全:使用SES发信前,必须为发件域名配置完整的SPF、DKIM、DMARC记录,Outlook对可操作消息的发件人可信度校验比普通邮件严格很多,域名认证不通过的邮件,哪怕卡片内容完全正确,也会被拦截渲染。
排查补充
改完上述问题如果仍无法渲染,可以再核对两个细节:
- 装载卡片的script标签必须放在邮件HTML的
<head>块内,不要放到<body>区域,部分版本的Outlook不会扫描body区域内的自适应卡片脚本。 - 检查SES的发送配置,不要开启自动HTML清洗、内容转义类的规则,避免服务端自动修改script标签结构、或者转义破坏JSON格式。你源码里看到的
Me= ssages是quoted-printable编码的正常软换行,不会影响内容解析,但要确认卡片JSON本身没有被这类软换行截断成非法格式。
内容的提问来源于stack exchange,提问作者Saurabh Dwivedi
相关产品推荐
相关产品推荐

