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

如何防止Gmail因安全原因移除邮件内嵌图片?

解决Gmail移除邮件内嵌图片的问题

我之前也碰到过一模一样的情况,Gmail的安全机制对内嵌图片的校验确实挺严格的,结合你给出的代码场景,给你几个亲测有效的解决办法:

  • 确保内嵌图片的Content-ID与HTML引用完全匹配
    你用到uuid生成唯一ID是个好思路,但要注意细节:

    1. 给MIMEImage对象设置Content-ID时,必须带上尖括号,比如:
      img_uuid = uuid.uuid4()
      content_id = f"<{img_uuid}>"
      img_part = MIMEImage(open(img_path, 'rb').read())
      img_part.add_header('Content-ID', content_id)
      
    2. 在HTML里引用图片时,要去掉尖括号,用cid:xxx的格式,比如:
      <img src="cid:{img_uuid}" alt="Embedded PNG">
      

    Gmail会严格校验这个关联关系,不匹配的话直接判定为不安全资源移除。

  • 使用正确的MIME多部分类型
    普通的multipart/mixed是用于混合附件和正文的,内嵌图片应该用multipart/related类型,它专门用于关联HTML内容和内嵌资源,Gmail对这种格式的兼容性更好。修改你的MIMEMultipart初始化代码:

    msg = MIMEMultipart('related')
    

    然后把HTML文本部分和所有图片部分都attach到这个related对象里,同时记得给HTML部分指定正确的Content-Type:

    html_content = "<html><body>这里是你的邮件内容,包含<img src='cid:...'>标签</body></html>"
    html_part = MIMEText(html_content, 'html', 'utf-8')
    msg.attach(html_part)
    
  • 提升邮件内容的可信度
    Gmail的安全机制会结合内容特征判断是否为可疑邮件:

    1. 给每张图片添加合理的alt文本,不要留空,这不仅符合可访问性规范,也能让邮件看起来更正规。
    2. 避免邮件主题和正文出现垃圾邮件特征(比如全大写标题、大量无意义字符、可疑链接)。
    3. 你已经在用OAuth2授权,这点非常棒!相比SMTP密码登录,OAuth2认证的发件人更容易通过Gmail的安全校验,降低被拦截的概率。
  • 通过原始邮件排查问题
    发送测试邮件后,在Gmail中打开邮件,点击右上角的三个点 → 「显示原始邮件」,检查以下关键项:

    • 图片部分的Content-ID是否带有尖括号
    • HTML里的src="cid:..."是否和Content-ID去掉尖括号后的内容完全一致
    • MIME多部分的类型是否为multipart/related

按照这些步骤调整后,Gmail应该就不会再移除你的内嵌PNG图片了,我之前用这套方法解决过完全相同的问题,效果很稳定~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:15:02