You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SendGrid同时发送text/html与text/plain邮件后无法送达问题排查

排查SendGrid添加text/plain内容后邮件无法送达的问题

以下是几个可能的原因和对应的排查/解决步骤:

1. 重复的Content类型导致API处理异常

你的代码中htmlContent的类型依赖于message.getContentType(),如果原message的ContentType本身就是text/plain,添加第二个text/plain类型的Content会导致邮件内容结构不符合SendGrid的要求(每个Content类型必须唯一)。

解决方法:
明确指定HTML内容的类型为text/html,避免依赖不确定的message.getContentType():

// 替换原htmlContent的创建代码
Content htmlContent = new Content("text/html", message.getContent());

2. 邮件内容触发反垃圾邮件规则

同时包含HTML和Plain文本的邮件如果格式不一致(比如HTML内容和Plain文本内容差异过大),可能被收件方的反垃圾邮件系统拦截。

排查方法:

  • 检查SendGrid仪表盘的「邮件活动」日志,查看邮件的具体状态(如被退回、标记为垃圾邮件)和原因说明。
  • 简化Plain文本内容,确保它和HTML内容的核心信息一致,避免触发垃圾邮件检测。

3. SendGrid API请求的内容结构错误

虽然代码返回202状态码(表示API已接受请求),但构建的邮件JSON可能存在隐性问题。

排查方法:
在调用sendgrid.api(request)前,打印mail.build()的结果,检查Content数组是否符合格式要求:

System.out.println(mail.build());
// 确认输出的JSON中content数组包含两个不同类型的对象:
// {"type": "text/html", "value": "..."} 和 {"type": "text/plain", "value": "..."}

4. SDK版本兼容性问题

旧版本的SendGrid Java SDK在处理多Content类型时可能存在bug,导致邮件无法正确发送。

解决方法:
升级SendGrid Java SDK到最新稳定版本,确保SDK能正确构建包含多类型Content的邮件请求。


内容的提问来源于stack exchange,提问作者Ivan Plotnikov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 17:09:32