node.js - 如何修复使用 AWS SES 和 Lambda 发送电子邮件?
问题描述
我正在 AWS 上设置一个简单的 NodeJS Lambda 函数来发送电子邮件。
下面的代码在我本地运行时有效。我已收到来自 AWS 的所有凭证,验证了发件人和收件人的电子邮件,并为我的 Lamba 授予了 SES 的所有权限
const aws = require("aws-sdk");
const config = require('../config')
aws.config.update({
accessKeyId: config.mailUser,
secretAccessKey: config.mailPassword,
region:'us-east-1'
});
const ses = new aws.SES({apiVersion: '2010-12-01'});
const sendEmail = async (mailOptions) => {
const {
from,
to,
subject,
html
} = mailOptions
console.log('foo')
ses.sendEmail({
Source: from,
Destination: {
ToAddresses: [to]
},
Message: {
Subject: {
Data: subject,
Charset: 'UTF-8'
},
Body: {
Html: {
Data: html,
Charset: 'UTF-8'
}
}
}
},
(err, data) => {
console.log('baz')
if (err) {
console.error(err);
} else {
console.log('Email sent:');
console.log(data);
}
});
};
console.log('bar')
module.exports = {
sendEmail
};
部署该功能时似乎ses.sendEmail()
永远不会触发 - 我在 CloudWatch 日志中得到foo
和但从未. 同样,如果在本地运行,一切都运行顺利。
我错过了什么?bar
baz
解决方案
这是一个很好的解释 - 显然您需要将您的ses.sendMail
调用包装在一个承诺中,以便它与 AWS Lambda 一起使用。
所有功劳归于https://www.reddit.com/user/jsdfkljdsafdsu980p/和https://www.reddit.com/user/Enoxice/
推荐阅读
- r - 将逻辑运算符表与向量组合以生成组合列表
- powerbi - 组内最大差异
- java - android上的Microsoft Graph,在检索文件时响应404
- nativescript - 在 nativescript angular 应用程序上使用 Nem-library 或 nem-sdk
- android - java.lang.RuntimeException:画布:试图绘制太大(125440000字节)位图
- javascript - How to control execution of 2 blocks of code?
- python - Django ORM Group BY 并返回附加字段
- mysql - PDO 准备好的语句绑定
- java - 在 Spring Boot 中将 Apache Mahout 与 ElasticSearch 集成
- php - 从 prestashop 中的当前购物车恢复产品