node.js - Amazon SES - SMTP 错误状态代码 403 : SignatureDoesNotMatch

标签 node.js amazon-web-services aws-sdk amazon-ses

我创建了亚马逊跟踪帐户来测试 SES SMTP 服务,但出现以下错误

{ [SignatureDoesNotMatch: The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details.


The Canonical String for this request should have been
'POST
/
host:email.us-west-2.amazonaws.com
x-amz-content-sha256:72ac6f1d5dc1a4218fc4076dea3277a8a676b15e2c5143229cb3503465817440
x-amz-date:20160912T084424Z

host;x-amz-content-sha256;x-amz-date
72ac6f1d5dc1a4218fc4076dea3277a8a676b15e2c5143229cb3503465817440'

The String-to-Sign should have been
AWS4-HMAC-SHA256
20160912T084424Z
20160912/us-west-2/ses/aws4_request
a1b9fe2e23bbd4456f9b2a8f4115bd84571b8ccbbf9612d2e6b9d330ca6975a7'
]
  message: 'The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details.\n\nThe Canonical String for this request should have been\n\'POST\n/\n\nhost:email.us-west-2.amazonaws.com\nx
-amz-content-sha256:72ac6f1d5dc1a4218fc4076dea3277a8a676b15e2c5143229cb3503465817440\nx-amz-date:20160912T084424Z\n\nhost;x-amz-content-sha256;x-amz-d
ate\n72ac6f1d5dc1a4218fc4076dea3277a8a676b15e2c5143229cb3503465817440\'\n\nThe String-to-Sign should have been\n\'AWS4-HMAC-SHA256\n20160912T084424Z\n
20160912/us-west-2/ses/aws4_request\na1b9fe2e23bbd4456f9b2a8f4115bd84571b8ccbbf9612d2e6b9d330ca6975a7\'\n',
  code: 'SignatureDoesNotMatch',
  time: Mon Sep 12 2016 14:14:27 GMT+0530 (India Standard Time),
  requestId: '1cc26156-78c5-11e6-8397-a55641b47b84',
  statusCode: 403,
  retryable: false,
  retryDelay: 55.79463441390544 }

这是我正在使用的 NodeJS 脚本

var aws = require('aws-sdk');
var ses = new aws.SES({
    'accessKeyId': 'KEY',
    'secretAccessKey': 'SECRET',
    'region': 'REGION'
});
var eparam = {
    Destination: {
        ToAddresses: ['mirXXXX@gmail.com']
    },
    Message: {
        Body: {
            Html: {
                Data: '<p>Hello, this is a test email!</p>'
            },
            Text: {
                Data: 'Hello, this is a test email!'
            }
        },
        Subject: {
            Data: 'SES email test'
        }
    },
    Source: 'mirXXXX@outlook.com',
    ReplyToAddresses: ['mirXXXX@outlook.com'],
    ReturnPath: 'mirXXXX@outlook.com'
};

ses.sendEmail(eparam, function (err, data) {
    if (err) console.log(err);
    else console.log(data);
});

请注意:

emailids mirXXXX@outlook.com and mirXXXX@gamil.com both are verified. my SES Region is us-west-2

最佳答案

我也遇到了同样的问题,我最终使用了 SMTP 设置,类似于 tutorial ,并从 2.6 -> 0.7.1 降级以发送邮件。某处存在某种配置问题,但经过两天的特定 Google 搜索后,该问题的记录不够充分,无法找到。

关于node.js - Amazon SES - SMTP 错误状态代码 403 : SignatureDoesNotMatch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39446825/

相关文章:

node.js - 如何在 Elastic Beanstalk 上运行 `npm update -g npm`?

java - S3Client跨区域copyObject

node.js - 如何使用 npm 和 nvm 安装 node-sass?

node.js - Express应用程序和socket.io在不同端口聊天?

node.js - 如何终止已停止的forever.js 守护进程?

javascript - 如何将大量视频文件导入 React 应用程序

amazon-web-services - Terraform 模板在手动更改 EBS 卷后重新创建所有资源

amazon-web-services - 如何确保 Athena 结果 S3 对象具有bucket-owner-full-control

javascript - 如何以管理员身份通过 Cognito SDK 更新用户属性

java - JAVA SDK 中不提供 GetCostAndUsageWithResources 方法