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

Laravel 10调用AWS SES API出现签名不匹配问题求助

可能的排查方向与解决方案
  • 确认区域完全匹配:AWS SES API对区域匹配要求严格,需确保mail.php中配置的region与你的SES账户实际所在区域完全一致(比如你配置的ap-southeast-1,需确认SES服务确实开通在该区域),避免拼写错误或混淆区域代码。

  • 检查配置文件冲突:若你同时在config/services.php中配置了SES相关参数,可能会和mail.php的配置产生冲突,建议统一在mail.php中配置,或确保两处配置的区域、签名版本、凭证信息完全一致。

  • 验证环境变量有效性:排查.env文件中AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY是否存在多余空格、引号或格式错误。可在代码中临时添加dd(env('AWS_ACCESS_KEY_ID'), env('AWS_SECRET_ACCESS_KEY')),确认变量被正确读取。

  • 强制指定API Endpoint:手动添加SES API的endpoint配置,避免SDK自动解析出错。修改mail.php中的SES配置:

    'ses' => [
        'transport' => 'ses',
        'version' => 'latest',
        'region'  => 'ap-southeast-1',
        'credentials' => [
            'key' => env('AWS_ACCESS_KEY_ID'),
            'secret'  => env('AWS_SECRET_ACCESS_KEY'),
        ],
        'signature_version' => 'v4',
        'endpoint' => 'https://email.ap-southeast-1.amazonaws.com' // 添加此行
    ],
    
  • 更新AWS SDK依赖:旧版本的aws/aws-sdk-php可能存在签名算法兼容问题,运行composer update aws/aws-sdk-php更新至与Laravel 10兼容的最新版本。

  • 排除临时凭证/角色影响:若你的IAM用户使用的是临时凭证(而非永久密钥),需在配置中添加token字段:

    'credentials' => [
        'key' => env('AWS_ACCESS_KEY_ID'),
        'secret'  => env('AWS_SECRET_ACCESS_KEY'),
        'token' => env('AWS_SESSION_TOKEN'),
    ],
    

    但根据你的描述,SMTP方式正常,此情况概率较低,可作为兜底排查项。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 17:42:16