当前位置: 首页 > 知识库问答 >
问题:

Laravel AWS SES-403禁止-尝试发送电子邮件时签名不匹配

曹经业
2023-03-14

我在我的Laravel应用程序中使用SES驱动程序“aws/aws sdk php”,通过aws SES(简单电子邮件服务)发送电子邮件。

访问密钥和密码是从SES控制台生成的

凭证将保存在产品中。env文件本身:

...
MAIL_FROM_ADDRESS=noreply@example.com
MAIL_FROM_NAME="My Laravel App"

SES_KEY=**********
SES_SECRET=*********
SES_REGION=us-east-1
...

之前,我们已经在开发过程中使用另一个AWS帐户生成的另一组SMTP凭据进行了测试,它可以正常工作。电子邮件正在按预期发送。它甚至可以在本地环境中使用密钥。

然而,当我们准备在另一个AWS帐户上正式服时,从SES生成的SMTP凭据似乎根本不起作用,我们得到了以下403禁忌响应:

[2019-07-09 16:22:55] production.ERROR: Error executing "SendRawEmail" on "https://email.us-east-1.amazonaws.com"; AWS HTTP error: Client error: `POST https://email.us-east-1.amazonaws.com` resulted in a `403 Forbidden` response:
<ErrorResponse xmlns="http://ses.amazonaws.com/doc/2010-12-01/">
  <Error>
    <Type>Sender</Type>
    <Code>SignatureDo (truncated...)
 SignatureDoesNotMatch (client): The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details. - <ErrorResponse xmlns="http://ses.amazonaws.com/doc/2010-12-01/">
  <Error>
    <Type>Sender</Type>
    <Code>SignatureDoesNotMatch</Code>
    <Message>The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details.</Message>
  </Error>
  <RequestId>123abc123-44d3-aa33-vv33-bb1234gg9g1c</RequestId>
</ErrorResponse>
 {"exception":"[object] (Aws\\Ses\\Exception\\SesException(code: 0): Error executing \"SendRawEmail\" on \"https://email.us-east-1.amazonaws.com\"; AWS HTTP error: Client error: `POST https://email.us-east-1.amazonaws.com` resulted in a `403 Forbidden` response:
<ErrorResponse xmlns=\"http://ses.amazonaws.com/doc/2010-12-01/\">
  <Error>
    <Type>Sender</Type>
    <Code>SignatureDo (truncated...)
 SignatureDoesNotMatch (client): The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details. - <ErrorResponse xmlns=\"http://ses.amazonaws.com/doc/2010-12-01/\">
  <Error>
    <Type>Sender</Type>
    <Code>SignatureDoesNotMatch</Code>
    <Message>The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details.</Message>
  </Error>
  <RequestId>123abc123-44d3-aa33-vv33-bb1234gg9g1c</RequestId>
</ErrorResponse>
 at /var/www/laravel/myapp/vendor/aws/aws-sdk-php/src/WrappedHttpHandler.php:191, GuzzleHttp\\Exception\\ClientException(code: 403): Client error: `POST https://email.us-east-1.amazonaws.com` resulted in a `403 Forbidden` response:
<ErrorResponse xmlns=\"http://ses.amazonaws.com/doc/2010-12-01/\">
  <Error>
    <Type>Sender</Type>
    <Code>SignatureDo (truncated...)

我尝试生成另一对访问密钥,但仍然相同。

请注意,我们已在SES上成功验证了我们的域和电子邮件地址,并通过SES控制台成功测试了从验证的电子邮件地址发送电子邮件。

非常感谢您对导致错误的原因给予的任何帮助。

共有1个答案

方梓
2023-03-14

已解决。

如果使用SES驱动程序,我必须从AWS控制台创建IAM凭据,而不是SMTP凭据。

 类似资料:
  • 我正在尝试在我的web应用程序(当前在localhost中)中发送电子邮件,我正在使用我在控制台应用程序中使用的下一个代码(及其工作代码),它应该打开一个网页,询问google帐户: 我得到了一个错误: 谷歌。API。请求。请求错误 许可不足[403] 错误[消息[权限不足]位置[-]原因[权限不足]域[全局]

  • 问题内容: 现在,我已经建立了一个PHP电子邮件表单,并且一切正常。但是,在测试时,我只得到了发件人的电子邮件地址作为名称。我想要的是发件人的姓名,例如: 约翰·杜 科目科目科目 代替: j.doe@website.com 科目科目科目 下面是代码… 有谁可以帮助我吗?谢谢。 PHP: 问题答案: 在您的4行说完之后添加一行:

  • 我正在尝试将一些带有硬编码电子邮件数据的测试代码直接插入到我的nodemailer服务器.js文件中,以开始使用基本的工作示例。请参阅以下网址中的“测试代码”部分: http://jsbin.com/sibubi/1/edit?html,js,控制台 在没有测试代码的情况下,Server.js加载没有问题。但是,当包含“测试代码”部分时,会出现错误。它抱怨“不支持的配置”,并建议降级,但我从nod

  • null 我遇到了这个错误: 下面是我的脚本: 我尝试添加作用域,尝试不同的电子邮件等。我也通过登录我的浏览器进行了身份验证。(testemail@gmail.com是一个虚拟电子邮件btw)

  • 我正在使用嵌入式Docusign API嵌入用于签名的文档。我将名字、姓氏和电子邮件存储在来自表单的会话中。我试图将templateRoles中的电子邮件更改为从表单存储在会话中的电子邮件,但我要么超时,要么得到一个错误,即电子邮件不正确:

  • 我们研发的App可以在用户确认访问我们的分支机构后向其发送电子邮件。当我们使用以下Gmail配置时,它可以正常工作:电子邮件:ainetwgdocs@gmail.comPasswd:XXXXX SMTP服务器:smtp.gmail.com端口:587但是,当我们尝试使用基于域的帐户时,它根本不起作用。我们使用以下参数:电子邮件:contact@ainetw.comPasswd:XXXXX SMTP