使用AWS Amplify和GraphQL变异发送电子邮件的解决方法如下:
首先,确保您已经设置好了AWS Amplify并且已经创建了GraphQL API。
安装相关的依赖库。在您的项目根目录下运行以下命令:
npm install aws-sdk aws-amplify
配置AWS Amplify。在您的项目根目录下创建一个名为aws-exports.js的文件,并将以下内容添加到文件中:
const awsmobile = {
"aws_project_region": "",
"aws_appsync_graphqlEndpoint": "",
"aws_appsync_region": "",
"aws_appsync_authenticationType": "API_KEY",
"aws_appsync_apiKey": ""
};
export default awsmobile;
创建一个名为sendEmail.js的文件,并添加以下代码:
const AWS = require('aws-sdk');
const awsConfig = require('./aws-exports');
AWS.config.update({
region: awsConfig.aws_project_region,
credentials: new AWS.Credentials({
accessKeyId: awsConfig.aws_access_key_id,
secretAccessKey: awsConfig.aws_secret_access_key
})
});
const ses = new AWS.SES({ apiVersion: '2010-12-01' });
async function sendEmail(email, subject, message) {
const params = {
Destination: {
ToAddresses: [email]
},
Message: {
Body: {
Html: {
Charset: 'UTF-8',
Data: message
}
},
Subject: {
Charset: 'UTF-8',
Data: subject
}
},
Source: 'your-email@example.com'
};
try {
const result = await ses.sendEmail(params).promise();
console.log("Email sent successfully", result);
} catch (error) {
console.error("Error sending email", error);
}
}
module.exports = sendEmail;
在您的GraphQL变异中调用sendEmail.js文件中的sendEmail函数。例如:
const sendEmail = require('./sendEmail');
// 在GraphQL变异解析函数中调用sendEmail函数
Mutation: {
sendEmail: async (parent, { email, subject, message }) => {
await sendEmail(email, subject, message);
return true;
}
}
这样,您就可以使用AWS Amplify和GraphQL变异发送电子邮件了。在您的应用程序中调用sendEmail GraphQL变异时,它将调用sendEmail.js文件中的sendEmail函数,并使用AWS SES发送电子邮件。