7

我正在使用 nodejs nodemailer 连接到 Amazon SES 电子邮件服务。一切看起来都很简单,但我不断收到错误消息:

“我们计算的请求签名与您提供的签名不匹配。请检查您的 AWS 秘密访问密钥和签名方法。有关详细信息,请参阅服务文档。”

我已经在网上搜索过,大多数人说这是因为您的密钥末尾有一个空格,或者有时正斜杠可能会导致问题。最后一个不再是问题,因为我一直在创建 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);}
});

有谁知道我还能做什么?

4

2 回答 2

3

当您使用 AWS SMTP 凭证时会发生这种情况。应该创建一个 AIM 用户并为其分配如下策略:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["ses:SendEmail", "ses:SendRawEmail"],
      "Resource": "*"
    }
  ]
}
于 2014-09-27T02:33:02.750 回答
-1

Amazon ses 允许您与在 amazon aws 帐户上注册的电子邮件地址之间发送电子邮件。您可以尝试验证它们,可能是问题所在。

http://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-email-addresses.html

这有关于如何验证它们的描述。

编辑:nodemailer ses 传输正常工作的步骤。1.准备好基本的ses运输工具。它可以按照您所做的相同方式创建。(您所做的)

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>'
};
  1. 从您的亚马逊 aws 帐户获取访问 keyId 和 awsSecretKey。(您做了。)

  2. 现在,一旦您完成上述步骤,您就可以将邮件发送到您在亚马逊 ses 帐户中注册的电子邮件地址。(验证链接将发送到您请求访问的电子邮件帐户,您需要单击它们进行验证)。通过您的帐户验证电子邮件地址的链接是我在上面发布的链接。

其中,您似乎还没有完成。因此,注册您想要发送电子邮件的电子邮件地址(以及来自!),并在代码的收件人地址和收件人地址中使用这些电子邮件地址。

如果您想向未注册的电子邮件地址发送电子邮件,则需要申请高级访问权限。它可以在您的帐户中的生产访问权限下找到。对该页面的引用是

https://docs.aws.amazon.com/ses/latest/DeveloperGuide/request-production-access.html

希望这能解决您的问题。谢谢你罗布的小费。

于 2015-08-10T10:19:35.733 回答