You need to enable JavaScript to run this app. 使用Boto3调用SES发邮件遇到AWS签名版本4错误该如何解决
优惠活动
大模型
产品
解决方案
定价
更多

使用Boto3调用SES发邮件遇到AWS签名版本4错误该如何解决

问题排查修复步骤

1. 优先检查凭证类型是否匹配

你按照SMTP凭证教程创建的凭证仅适用于通过SMTP协议连接SES的场景,Boto3作为AWS SDK调用SES接口时,需要使用IAM用户的访问密钥对(Access Key ID + Secret Access Key),而非SMTP凭证。如果你的配置项中填入的是SMTP凭证的值,直接替换为对应IAM用户的访问密钥即可解决绝大多数这类签名错误。

2. 其他常见问题排查

  • 校验IAM权限:确认使用的IAM用户已经附加了允许SES发信的权限策略,需要至少包含ses:SendEmail、ses:SendRawEmail的操作权限。
  • 校验配置项正确性:检查settings.py中存储的访问密钥没有前后多余的空格、换行符,不要填反Access Key ID和Secret Access Key,也不要遗漏Secret Access Key的任意字符。
  • 校验区域一致性:确认AWS_SES_REGION_NAME的配置值和你SES发件人地址/域名所在的开通区域一致,区域不匹配也会触发签名校验失败。
  • 手动指定签名版本:部分特殊场景下默认签名版本不兼容,可以手动指定SigV4签名,修改初始化代码如下:
from botocore.config import Config

client = boto3.client(
    'ses',
    region_name=settings.AWS_SES_REGION_NAME,
    aws_access_key_id=settings.AWS_SES_ACCESS_KEY_ID,
    aws_secret_access_key=settings.AWS_SES_SECRET_ACCESS_KEY,
    config=Config(signature_version='s3v4')
)
  • 检查服务器时间同步:AWS签名算法要求请求方时间和AWS服务器时间差不超过15分钟,如果部署应用的服务器时间偏移过大,同步系统时间即可解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 20:36:03