【问题标题】:Amazon SES nodemailer connection failingAmazon SES 节点邮件程序连接失败
【发布时间】:2015-08-11 14:29:30
【问题描述】:

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

有人知道我还能做什么吗?

【问题讨论】:

  • 这个运气好吗?我刚刚在开发者的 github 上创建了一个问题。

标签: amazon-ses nodemailer


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    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. 从您的 amazon aws 帐户获取访问 keyId 和 awsSecretKey。(您已这样做。)

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

    其中,您似乎还没有完成。所以注册电子邮件地址 您想向(以及从!)发送电子邮件,并在您的代码地址中使用这些电子邮件地址。

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-17
      • 2013-02-12
      • 1970-01-01
      相关资源
      最近更新 更多