11

尝试使用 java 代码从 Amazon EC2 服务器发送邮件但遇到异常,例如 -

Exception in thread "main" Status Code: 403, AWS Request ID: 3e9319ec-bc62-11e1-b2ea-6bde1b4f192c, AWS Error Code: AccessDenied, AWS Error Message: User: arn:aws:iam::696355342546:user/brandzter is not authorized to perform: ses:SendEmail
at com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:500)
at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:262)
at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:166)
at com.amazonaws.services.simpleemail.AmazonSimpleEmailServiceClient.invoke(AmazonSimpleEmailServiceClient.java:447)
at com.amazonaws.services.simpleemail.AmazonSimpleEmailServiceClient.sendEmail(AmazonSimpleEmailServiceClient.java:242)
at brandzter.util.SESExample.SendMail(SESExample.java:46)
at brandzter.util.SESExample.<init>(SESExample.java:31)
at brandzter.util.SESExample.main(SESExample.java:52)

Java 结果:1

我的凭证没问题,不知道为什么我无法在这里发送电子邮件。我需要配置/更新服务器中的任何设置吗?

4

2 回答 2

11

您的用户无权在身份和访问管理 (IAM) 中向 SES 发送电子邮件。

错误 403 是指 HTTP 代码 403 Unauthorized。

最后的错误告诉你你缺少什么权限。

arn:aws:iam::696355342546:user/brandzter 无权执行:ses:SendEmail

或者,您的 AWS 账户可能没有注册简单电子邮件服务,但我怀疑这是问题所在。

您可以使用以下策略向 IAM 添加仅允许 sendEmail 操作的组:

{
  "Statement": [
    {
      "Action": [
        "ses:SendEmail"
      ],
      "Effect": "Allow",
      "Resource": [
        "*"
      ]
    }
  ]
}

或者,您可以给它一个允许它在 SES 上执行任何操作的策略:

{
  "Statement": [
    {
      "Action": [
        "ses:*"
      ],
      "Effect": "Allow",
      "Resource": [
        "*"
      ]
    }
  ]
}
于 2012-07-02T16:19:15.997 回答
6

在我的情况下,我去了 IAm 控制台,选择我的用户并附加策略 AmazonSESFullAccess

于 2015-05-13T20:35:03.250 回答