Node.js 节点AWS-SDK SES电子邮件发送验证失败
我正在使用aws sdk使用Node发送aws SES电子邮件,并且我能够使用aws CLI成功发送电子邮件。但是,从我的节点脚本来看,由于某些原因,我的电子邮件验证失败 代码如下:Node.js 节点AWS-SDK SES电子邮件发送验证失败,node.js,amazon-web-services,aws-sdk,amazon-ses,Node.js,Amazon Web Services,Aws Sdk,Amazon Ses,我正在使用aws sdk使用Node发送aws SES电子邮件,并且我能够使用aws CLI成功发送电子邮件。但是,从我的节点脚本来看,由于某些原因,我的电子邮件验证失败 代码如下: const aws = require('aws-sdk') const ses = new aws.SES() const message = { Destination: { ToAddresses: ['example@example.com] },
const aws = require('aws-sdk')
const ses = new aws.SES()
const message = {
Destination: {
ToAddresses: ['example@example.com]
},
Message: {
Body: {
Text: {
Charset: 'UTF-8',
Data: 'Test body'
}
},
Subject: {
Charset: 'UTF-8',
Data: 'Test subject'
}
},
Source: 'example@example.com'
}
ses.sendEmail(message, function (err, data) {
if (err) console.log(err);
else console.log(data);
});
以下是错误:
message: 'Email address is not verified. The following identities failed the check in region US-EAST-1: example@example.com',
code: 'MessageRejected',
time: 2017-12-15T15:37:26.312Z,
requestId: 'random-id',
statusCode: 400,
retryable: false,
retryDelay: 15.030260565173382
请帮忙!谢谢大家! Per:
未验证电子邮件地址。以下身份未通过签入区域(region):(identity1),(identity2),(identity3)-您正在尝试从未经Amazon SES验证的电子邮件地址或域发送电子邮件。此错误可能适用于“发件人”、“源”、“发件人”或“返回路径”地址
如果您的帐户仍在沙箱中,您还必须验证每个收件人的电子邮件地址,但Amazon SES邮箱模拟器提供的收件人除外。如果Amazon SES无法显示所有失败的标识,则错误消息以省略号结尾
注意:Amazon SES在多个AWS区域中有端点,每个AWS区域的电子邮件地址验证状态是独立的。您必须为要使用的AWS区域中的每个发件人完成验证过程
我强烈怀疑您的应用程序配置与您用于通过CLI成功发送测试电子邮件的配置不完全匹配
检查以下配置:
- “源”地址必须是us-east-1地区经SES验证的发件人。检查您希望从中发送电子邮件的源地址是否是您希望从中发送电子邮件的每个地区的已验证发件人
- 如果启用SES沙箱模式,电子邮件收件人(“ToAddresses”值)也必须是us-east-1地区的SES验证发件人。有关如何删除此限制的说明,请参见“”
- 确保您要测试的所有客户端都在同一个区域中进行测试,因为每个区域的配置都需要不同。错误消息提到应用程序试图命中us-east-1中的SES,因此请使用
选项再次在us-east-1区域显式执行CLI测试。如果使用CLI默认区域,则初始CLI测试可能存在缺陷,并且该区域恰好不是us-east-1--region
- 如果以上所有内容看起来都正确,请仔细检查节点应用程序。确保SES客户端针对您希望使用的区域进行了配置,并且客户端正确写入了您希望发送给SES请求的电子邮件
app.post('/email', function(req, res) {
var ses = require('node-ses'),
client = ses.createClient({
key: 'xxx',
secret: 'xxx',
amazon: 'https://email.eu-west-1.amazonaws.com'});
client.sendEmail({
to: 'xxx'
, from: 'xxx'
, cc: ''
, bcc: ''
, subject: 'greetings'
, message: 'your <b>message</b> goes here'
, altText: 'plain text'
}, function (err, data, res) {
if (err) {
console.log('Email send Error: ',JSON.stringify(err, null, 2));
} else {
console.log('Email send Success: ', JSON.stringify(data,null,2));
}
});
});
app.post('/email',函数(req,res){
var ses=require('node-ses'),
client=ses.createClient({
键:“xxx”,
秘密:“xxx”,
亚马逊:'https://email.eu-west-1.amazonaws.com'});
client.sendmail({
致:“xxx”
,发件人:'xxx'
,抄送:“”
,密件抄送:“”
,主题:“问候”
,留言:“您的留言在这里”
,altText:“纯文本”
},函数(错误、数据、恢复){
如果(错误){
log('Email send Error:',JSON.stringify(err,null,2));
}否则{
log('Email send Success:',JSON.stringify(data,null,2));
}
});
});
sanitycheck:我猜您没有真正使用example@example.com
——您的实际电子邮件地址是否是美国东部地区经SES验证的发件人?@AnthonyNeace谢谢您的提问!是的,它是use-east-1,我能够使用AWS CLI从终端成功发送电子邮件。下一个故障排除步骤:您是否仍处于SES沙箱模式,如果收件人的电子邮件地址可能也需要是该地区经SES验证的发件人?@AnthonyNeace我为发件人和收件人设置了相同的电子邮件地址,并且使用AWS CLI,我能够收到电子邮件。非常感谢!我一定会检查所有这些步骤