我创建了一个新的亚马逊帐户。创建SMTP凭据并使用AWS Java SDK发送电子邮件。但它失败了以下错误:
状态代码:403,AWS服务:AmazonSimpleEmailService,AWS Request ID:xyz,AWS错误代码:SignatureDoesNotMatch,AWS错误消息:The 我们计算的请求签名与您的签名不符 提供。检查您的AWS Secret Access Key和签名方法。请教 服务文档了解详情。
答案 0 :(得分:20)
提供发送电子邮件的密钥不是“SMTP凭据”。密钥是全局访问密钥,可以检索http://docs.amazonwebservices.com/ses/latest/GettingStartedGuide/GetAccessIDs.html。
答案 1 :(得分:8)
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用户添加新凭据,但我还没有对此进行测试。