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

使用Boto3调用AWS SES发送邮件时HTML代码直接显示问题求助

搞定AWS SES发送HTML邮件显示源码的问题

嘿,你遇到的问题其实是SES邮件Body字段的使用误区啦!你现在的代码里犯了两个小错误,导致HTML内容被当成纯文本发送,客户端才会直接显示源码:

问题出在哪?

  1. 你在Body里重复写了两次Text键——Python字典里重复的键会被最后一个覆盖,所以实际发送的是那段HTML代码,但因为是放在Text字段里,SES会把它标记成text/plain类型,客户端自然就直接显示代码了。
  2. ToAddresses参数需要传列表,你写的单个字符串可能会触发报错,这个也顺手改了吧。

修正后的代码

from boto3 import client
conn = client('ses', region_name='us-east-1')
conn.send_email(
    Source=from_addr,
    Destination={'ToAddresses': ['x@x.com']},  # 改成列表格式
    Message={
        'Subject': {'Data': self.subject, 'Charset': 'UTF-8'},
        'Body': {
            'Text': {'Data': 'Hello', 'Charset': 'UTF-8'},  # 给不支持HTML的客户端留的纯文本 fallback
            'Html': {'Data': '<html>Hello</html>', 'Charset': 'UTF-8'}  # HTML内容专门放在Html字段里
        }
    }
)

核心要点

SES的send_email方法里,Body支持同时定义Text和Html两个字段:

  • 用Html字段存放你的HTML内容,SES会自动为这部分设置Content-Type: text/html,客户端就会正确渲染HTML了。
  • Text字段是纯文本 fallback,方便那些不支持HTML的邮件客户端显示内容,当然如果不需要也可以只保留Html字段。

这样修改之后,你再发邮件,客户端就会正常显示渲染后的HTML内容啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:14:26