使用SendGrid v3 API发送的AMP邮件无法正常加载问题
问题分析与修复方案
核心问题根源
你在请求中同时传入了content字段(硬编码了仅显示“Hello”的AMP内容)和template_id,这两者存在优先级冲突:SendGrid会优先使用你手动指定的content覆盖模板生成的内容。而Gmail的预览与实际打开的渲染逻辑差异,导致了矛盾现象:
- 收件箱预览:可能读取了模板生成的HTML摘要或缓存内容,显示正常
- 打开邮件:实际加载的是
content里的硬编码AMP内容,仅显示Hello - 转发时:邮件客户端会重新解析并封装内容,模板的原始AMP内容被正确提取渲染
修复步骤
- 移除冗余的
content字段
既然使用SendGrid模板发送AMP邮件,无需手动传入content,模板会自动生成对应格式的内容。修正后的请求体如下:
{ "personalizations": [ { "to": [ { "email": "name@domain.com", "name": "Name Surname" } ], "subject": "this is an AMP email" } ], "template_id": "f-5kk76740d084490a88d376fc1b1b277g", "from": { "email": "name2@domain.com", "name": "Name 2" } }
- 验证模板的AMP配置
登录SendGrid后台检查模板:
- 进入模板编辑器,切换到AMP标签页
- 确认AMP代码符合
amp4email规范:包含<script async src="https://cdn.ampproject.org/v0.js"></script>和 boilerplate样式(<style amp4email-boilerplate>body{visibility:hidden}</style>)
- 测试邮件渲染
重新发送测试邮件,打开后查看AMP内容是否正常加载;若仍有问题,可通过Gmail的“显示原始邮件”功能,检查text/x-amp-html部分是否为模板生成的内容。
补充说明
转发时内容正常的原因:邮件转发过程中,客户端会重新处理邮件内容,跳过原始邮件中被覆盖的AMP部分,直接使用模板渲染后的完整内容进行封装,因此能正确显示模板内容。
内容的提问来源于stack exchange,提问作者aNX22
相关产品推荐
相关产品推荐

