【发布时间】:2022-01-14 09:33:09
【问题描述】:
我有一个应该发送电子邮件的 node.js 函数。当我使用 NODE REPL 在本地运行脚本时,它工作正常,并且我收到了预期的电子邮件。但是,当我将它部署到 AWS 时,我没有收到任何电子邮件。
我确实看到了类似标题的结果:aws ses.sendEmail is not being called from lambda function,但是,我没有使用异步。
let aws = require('aws-sdk'),
ses = new aws.SES({ region: 'us-east-1' }),
makeParams = request => {
console.log('send' + request)
// console.log('markparam: '+request)
var emailBody = 'BOO bOO BAR';
// console.log(request.body)
for (var a in request.body) {
// console.log(a);
// emailBody +=' test'
// console.log(request.body[a]);
// emailBody += `${a}: ${request.body[a]}<br />`
}
return {
Destination: { /* required */
ToAddresses: [
creators@xxxxxxxx.com
]
},
Message: { /* required */
Body: { /* required */
Html: {
Data: emailBody, /* required */
Charset: 'UTF-8'
},
Text: {
// Data: emailBody.replace(/<br \/>/, "\r\n"), /* required */
Data: emailBody,
Charset: 'UTF-8'
}
},
Subject: { /* required */
Data: 'New Opportunity Submitted', /* required */
Charset: 'UTF-8'
}
},
Source: 'creators@xxxxxxxx.org'
}
},
send = request => {
console.log('send request: '+request.body)
return ses.sendEmail(makeParams(request)).promise().then(function(data){
console.log('data: '+data)
}).catch(function(err){console.log('error: '+ err,err.stack)});
};
When I run it locally using NODE this is my output:
Welcome to Node.js v14.17.6.
Type ".help" for more information.
> let b = require('./app/bindings.js')
undefined
> b.send({body: {foo:'bar',bar:'baz'}})
send request: [object Object]
send[object Object]
Promise { <pending> }
> data: [object Object]
> .exit
在这里您可以看到它在发送电子邮件后打印数据,向我确认它已发送。
但是,如果我尝试从我的网络应用程序远程执行此操作,或者使用 CURL 作为:
curl -X POST -d '{body: { foo:"bar",bar:"baz" }}' https://xxxxx4d.execute-api.us-east-1.amazonaws.com/latest/new-opportunity/
这会产生如下的 cloudwatch 日志:
2022-01-13T16:27:50.649-05:00 START RequestId: b7611af9-2b5a-4d29-a59f-ad074683982f Version: $LATEST
2022-01-13T16:27:50.653-05:00 2022-01-13T21:27:50.653Z b7611af9-2b5a-4d29-a59f-ad074683982f INFO request[object Object]
2022-01-13T16:27:50.653-05:00 2022-01-13T21:27:50.653Z b7611af9-2b5a-4d29-a59f-ad074683982f INFO send request: undefined
2022-01-13T16:27:50.673-05:00 2022-01-13T21:27:50.673Z b7611af9-2b5a-4d29-a59f-ad074683982f INFO send{body:{foo:'bar',bat:'baz'}}
2022-01-13T16:27:51.076-05:00 END RequestId: b7611af9-2b5a-4d29-a59f-ad074683982f
它似乎没有发送。这是相同的代码,没有任何更改,但我不知道为什么它会在本地运行和远程运行时发送电子邮件。
【问题讨论】:
标签: node.js amazon-web-services aws-lambda