无法从Amazon EC2服务器中用Java发送电子邮件

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

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


S3只是一种存储方式,可能在EC2中你可以发送电子邮件。 - Elzo Valugi
你可能想要更改你的帖子标题。 - El Guapo
听起来像是Brandzter用户的权限错误。请检查其权限。可能有拼写错误吗? - Elzo Valugi
我的网站和邮件服务运行在同一台服务器上,因此我认为权限是正确的。 - Khoyendra Pande
@Subin:我为什么需要使用SES? - Khoyendra Pande
开个玩笑,除此之外,使用正确的工具来完成正确的工作。如果您计划使用AWS基础设施,则应使用适当的服务。SES似乎专门用于电子邮件。 - Elzo Valugi
2个回答

11

您的用户在身份与访问管理(IAM)中没有发送电子邮件到SES的授权。

错误403是指HTTP代码403未经授权。

最后的错误提示您缺少哪些权限。

arn:aws:iam::696355342546:user/brandzter未获得执行以下操作的授权: ses:SendEmail

或者,您的AWS账户可能尚未注册Simple Email Service,但我怀疑问题不在此处。

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

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

或者您可以为其提供一个策略,允许其在SES上执行任何操作:

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

1
这两个代码块是相同的...... 你可能想让第二个读取:{  “声明”:[     {       “作用”:“允许”,       “操作”:[         “ses:”       ],       “资源”:[         “”       ]     }  ] } - Laizer

6

在我的情况下,我进入了IAM控制台,选择了我的用户,并附加了AmazonSESFullAccess策略。


此外,我将AmazonSESFullAccess添加到该用户的角色中。 - Dr Casper Black
我发现该用户没有AmazonSESFullAccess权限,但我成功将其添加到了该用户所属的组中。谢谢。 - CodeBrew

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接