我使用 nodemailer 和 AWS SES 服务来创建 nodemailer 传输器。当我尝试使用 SES SMTP 发送电子邮件时,它没有出现错误,整个代码可以正常运行,但使用 AWS SES 传输器时,它出现 SignatureDoesnotMatch 错误。而 SMTP 传输器和 SES 传输器中的 access-key-ID 和 Secret-access-Key 是相同的。
这是我的代码示例
AWS.config.update({
accessKeyId: "<<access-Key-ID>>",secretaccessKey: "<<Secret-access-Key>>",region: "us-west-2",});
// Instantiate SES.
const ses = new AWS.SES();
// Check verified email
ses.listVerifiedEmailaddresses(function (err,data) {
if (err) {
console.log(err);
} else {
console.log({ Message: "Here is list of all verified emails",data });
}
});
// Verify customer email address
const params = {
Emailaddress: activeAlert.destination,};
ses.verifyEmailaddress(params,function (err,data) {
if (err) {
console.log(err);
} else {
console.log({ message: "Email verification successfull",data });
}
});
// Create nodemailer SES transporter
// AWS SES transport
let transporter = nodemailer.createTransport({
SES: new AWS.SES({ apiVersion: "2010-12-01",region: "us-west-2" }),});
// While SMTP transporter is here just for example. I tried both of them but SMPT works fine for me.
let transporter = nodemailer.createTransport({
host: "<<AWS HOST>>",port: 465,auth: {
user: "<<access-Key-ID>>",pass: "<<Secret-access-Key>>",},});
电子邮件部分与 SMTP 配合良好,但我想使用 AWS-SDK 的功能,这也给了我 SignatureDoesnotMatch 错误。我不知道我想念什么。我想消除调用 AWS-SDK 函数时的 SignatureDoesnotMatch 错误(listVerifiedEmailaddresses、verifyEmailaddress)。
如果我在代码中写错了请纠正我并帮助我摆脱这个错误。