[英]Send Email with attachment using aws-sdk(Amazon SES) using nodejs
[英]Node AWS-SDK SES email send verification fail
我正在使用 aws-sdk 和 Node 發送 AWS SES 電子郵件,並且我能夠使用 AWS CLI 成功發送電子郵件。 但是,在我的 Node 腳本中,由於某種原因,我的電子郵件驗證失敗。
下面是代碼:
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
請幫忙! 謝謝!
根據AWS 故障排除文檔:
電子郵件地址未驗證。 以下身份未能通過區域 (region) 簽入:(identity1)、(identity2)、(identity3) — 您正在嘗試從尚未使用 Amazon SES 驗證的電子郵件地址或域發送電子郵件。 此錯誤可能適用於“發件人”、“來源”、“發件人”或“返回路徑”地址。
如果您的賬戶仍在沙箱中,您還必須驗證每個收件人電子郵件地址,但 Amazon SES 郵箱模擬器提供的收件人除外。 如果 Amazon SES 無法顯示所有失敗的身份,則錯誤消息以省略號結尾。
注意:Amazon SES 在多個 AWS 區域具有終端節點,並且每個 AWS 區域的電子郵件地址驗證狀態是不同的。 您必須為要使用的 AWS 區域中的每個發件人完成驗證過程。
我強烈懷疑您的應用程序的配置與您用於通過 CLI 成功發送測試電子郵件的配置不是 100% 匹配。
檢查以下配置:
--region
選項再次明確地在 us-east-1 區域中執行 CLI 測試。 如果使用 CLI 默認區域,則初始 CLI 測試可能存在缺陷,而該區域恰好不是 us-east-1。這是我使用帶有 express、ejs 和 npm 包 node-ses 的 node.js 的代碼
上面提到了解決方案,但很容易錯過。 這是第三部分,在密鑰和秘密之后,對亞馬遜的回調 - 網址需要在那里並且需要為您的地區定制,在我的例子中是 eu-west-1,另外兩個選擇是 us-east-1或 us-west-2。
在 IAM - User 中找到了密鑰和秘密。 一旦您設置了具有編程訪問權限和 AmazonSESFullAccess 權限的用戶。 選擇您的用戶,然后選擇“安全憑據”選項卡。 向下滑動並單擊創建訪問密鑰。
您只能訪問一次您的秘密密碼。 當您獲得訪問權限時,突出顯示秘密密碼,將其復制並與您的密鑰一起安全地粘貼到某處。
您的發件人電子郵件必須與在 AWS SES 頁面上注冊的域相關。 如果您不使用 Route 53 進行托管,您還需要在 AWS 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));
}
});
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.