16

我创建了一个新的亚马逊帐户。创建 SMTP 凭证并使用 AWS Java SDK 发送电子邮件。但它失败并出现以下错误:

状态代码:403,AWS 服务:AmazonSimpleEmailService,AWS 请求 ID:xyz,AWS 错误代码:SignatureDoesNotMatch,AWS 错误消息:我们计算的请求签名与您提供的签名不匹配。检查您的 AWS 秘密访问密钥和签名方法。有关详细信息,请参阅服务文档。

4

2 回答 2

28

为发送电子邮件而提供的密钥不是“SMTP 凭据”。这些密钥是全局访问密钥,可以检索http://docs.amazonwebservices.com/ses/latest/GettingStartedGuide/GetAccessIDs.html

于 2013-01-12T19:18:05.397 回答
12

SMTP 凭证不适用于 SES API (AWS Java SDK)。SMTP 凭证实际上与为 IAM 用户手动创建的凭证不同,即使这种不同在 AWS 控制台的任何地方都不可见。看看这里看看差异:http ://docs.aws.amazon.com/ses/latest/DeveloperGuide/using-credentials.html

您实际上不需要创建全局访问凭证(这可能是安全漏洞),但您应该使用以下安全策略创建一个新的 IAM 用户,并为该用户创建新的凭证。

{
"Version": "2012-10-17",
"Statement":[{
   "Effect":"Allow",
   "Action":["ses:SendEmail", "ses:SendRawEmail"],
   "Resource":"*"
   }
]
}

PS:也许,您可以向已为 SES 创建的 SMTP IAM 用户添加新凭证,但我尚未对此进行测试。

于 2014-06-26T14:42:57.463 回答