Amazon SES nodemailer连接失败

时间:2014-06-26 05:14:58

标签: amazon-ses nodemailer

我使用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);}
});

任何人都知道我还能做些什么吗?

2 个答案:

答案 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>'
};
  1. 从你的amazon aws帐户获取访问keyId和awsSecretKey。(你做了。)

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

  3. ,看来你还没有完成。所以注册电子邮件地址 你想发送电子邮件(以及!),并在你的往返地址中使用这些电子邮件地址。

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

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

    希望这能解决您的问题。谢谢Rob的提示。