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

如何在Laravel 8中正确设置AWS SES发信身份解决权限报错

AWS SES Laravel 发信身份识别错误解决方案

该报错的根因是SES发信时错误将收件人域名识别为需要验证的发信身份,需强制指定已验证的自有域名作为发信身份,以下是完整修复步骤:

  • 修复services.php配置错误
    你原有配置存在语法错误和参数缺失问题,修正后配置如下:
// services.php
return [
    'ses' => [
        'key' => '你的AWS Access Key',
        'secret' => '你的AWS Secret Key',
        'region' => '你的SES区域,如us-east-1',
        'options' => [
            'SourceArn' => 'arn:aws:ses:locationLblabla:identity/[correct-domain].com',
            'FromArn' => 'arn:aws:ses:locationLblabla:identity/[correct-domain].com',
            'ReturnPathArn' => 'arn:aws:ses:locationLblabla:identity/[correct-domain].com',
        ],
    ]
];

修正点说明:

  1. 补全SourceArn行末尾的逗号,避免PHP语法错误导致配置不生效
  2. 补充FromArn和ReturnPathArn参数,强制指定所有发信相关身份为你已验证的自有域名,避免SDK自动推断身份时读取收件人域名
  • 移除冗余的自定义头配置
    删除MyMailable.php中手动添加X-SES-SOURCE-ARN头的逻辑,该配置会和services.php中传递的ARN参数冲突,导致参数优先级异常。
  • 验证IAM权限配置
    确认你的IAM用户关联的权限策略中,ses:SendRawEmail权限的资源配置为你已验证的域名ARN,示例策略如下:
{
    "Effect": "Allow",
    "Action": "ses:SendRawEmail",
    "Resource": "arn:aws:ses:locationLblabla:identity/[correct-domain].com"
}
  • 确认全局发件人配置
    检查config/mail.php中的全局发件人地址,必须使用你已验证域名下的邮箱:
// config/mail.php
return [
    // 其他配置项
    'from' => [
        'address' => 'do-not-reply@my-comp.com',
        'name' => '你的发件人名称',
    ],
];

如果完成以上步骤仍无法正常发送,可直接调用AWS SES SDK发送测试邮件,排除Laravel驱动自身bug:

$ses = new Aws\Ses\SesClient([
    'version' => 'latest',
    'region' => '你的SES区域',
    'credentials' => [
        'key' => '你的AWS Access Key',
        'secret' => '你的AWS Secret Key',
    ],
]);

$result = $ses->sendRawEmail([
    'Source' => 'do-not-reply@my-comp.com',
    'Destinations' => ['joe-bob@gmail.com'],
    'RawMessage' => [
        'Data' => base64_encode("To: joe-bob@gmail.com\nFrom: do-not-reply@my-comp.com\nSubject: 测试邮件\n\n测试内容"),
    ],
    'SourceArn' => 'arn:aws:ses:locationLblabla:identity/[correct-domain].com',
    'FromArn' => 'arn:aws:ses:locationLblabla:identity/[correct-domain].com',
    'ReturnPathArn' => 'arn:aws:ses:locationLblabla:identity/[correct-domain].com',
]);

如果直接调用SDK可正常发送,说明你当前使用的Laravel版本SES驱动存在参数传递bug,可升级Laravel框架到最新稳定版,或自定义邮件驱动处理SES参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 14:45:03