我使用nodejs nodemailer连接到Amazon SES电子邮件服务。这看起来很简单,但我一直收到错误:
"我们计算的请求签名与您提供的签名不匹配。检查您的AWS Secret Access Key和签名方法。有关详细信息,请参阅服务文档。"
我已经在网上搜索过,大多数人都说这是因为你的密码键末尾有空格,或者有时正斜线可能导致问题。最后一个不再是问题,因为我一直在创建SMTP凭据,直到没有。我现在创建了大约10个SMTP凭据,每次都复制并粘贴了AccessKey和SecretKey,但我仍然收到此错误。我也尝试过使用http://email-smtp.us-west-2.amazonaws.com,但仍然遇到了同样的错误。
这是我的代码:
var nodemailer = require("nodemailer");
var transport = nodemailer.createTransport("SES",
{
AWSAccessKeyID: 'AKIA************',
AWSSecretKey: 'AqlwF*****************************',
SeviceUrl: 'http://email-smtp.us-east-1.amazonaws.com'
});
nodemailer.sendMail({
transport : transport,
sender : 'some@thing.com' ,
to : 'another@address.com',
subject : 'TEST',
html: '<p> Hello World </p>'
}, function(error, response)
{
if(error){ console.log(error); }
else{ console.log("Message sent: " + response.message);}
});
任何人都知道我还能做些什么吗?
答案 0 :(得分:3)
使用AWS SMTP凭据时会发生这种情况。应该创建一个AIM用户并为其分配一个类似下面的策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["ses:SendEmail", "ses:SendRawEmail"],
"Resource": "*"
}
]
}
答案 1 :(得分:-1)
Amazon ses允许您向amazon aws帐户上注册的电子邮件地址发送电子邮件。您可以尝试验证它们,可能就是问题所在。
http://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-email-addresses.html
这有关于如何验证它们的说明。
编辑: nodemailer ses传输工作正常的步骤。 1.准备好基本的运输工具。它可以用你创建的方式创建。(你做过的)
var nodemailer = require("nodemailer");
var transport = nodemailer.createTransport("SES",
{
AWSAccessKeyID: 'AKIA************',
AWSSecretKey: 'AqlwF*****************************',
SeviceUrl: 'http://email-smtp.us-east-1.amazonaws.com'
});
mail={
transport : transport,
sender : 'some@thing.com' ,
to : 'another@address.com',
subject : 'TEST',
html: '<p> Hello World </p>'
};
从你的amazon aws帐户获取访问keyId和awsSecretKey。(你做了。)
现在,完成上述步骤后,您就可以将邮件发送到您在亚马逊网站注册的电子邮件地址。(验证链接将发送到您请求的电子邮件帐户访问权限,您需要单击它们以验证)。通过您的帐户验证电子邮件地址的链接是我在上面发布的链接。
,看来你还没有完成。所以注册电子邮件地址 你想发送电子邮件(以及!),并在你的往返地址中使用这些电子邮件地址。
如果您要向尚未注册的电子邮件地址发送电子邮件,则需要申请高级访问权限。您可以在生产权限下的帐户中找到它。对该页面的引用是
https://docs.aws.amazon.com/ses/latest/DeveloperGuide/request-production-access.html
希望这能解决您的问题。谢谢Rob的提示。