在AWS Lambda(Node.js)中设置与发件人不同的Reply-To邮箱地址
解决AWS SES添加Reply-To回复地址的问题
在Node.js 14.x环境的AWS Lambda中,给SES的sendEmail请求添加Reply-To地址的正确语法有两种方式,你之前的写法不符合AWS SDK v2的参数规范,所以报错。
方式1:仅指定回复邮箱地址
直接在params中添加ReplyToAddresses字段,值为包含提交者邮箱的数组:
const aws = require("aws-sdk"); const ses = new aws.SES({ region: "eu-central-1" }); exports.handler = async function(event) { // Extract the properties from the event body const { senderEmail, senderName, messageSubject, message } = JSON.parse(event.body) const params = { Destination: { ToAddresses: ["my@emailaddress.com"], }, Message: { Body: { Text: { Data: `Nom : ${senderName} Adresse mail : ${senderEmail} Sujet : ${messageSubject} Message : ${message}` }, }, Subject: { Data: `${messageSubject} (${senderName})` }, }, Source: "formsender@emailaddress.com", // 正确设置Reply-To地址(仅邮箱) ReplyToAddresses: [senderEmail] }; return ses.sendEmail(params).promise(); };
方式2:指定回复邮箱的显示名称和地址
如果需要让回复时显示提交者的名字,可以使用ReplyTo字段,值为包含Name和Address的对象数组:
const aws = require("aws-sdk"); const ses = new aws.SES({ region: "eu-central-1" }); exports.handler = async function(event) { // Extract the properties from the event body const { senderEmail, senderName, messageSubject, message } = JSON.parse(event.body) const params = { Destination: { ToAddresses: ["my@emailaddress.com"], }, Message: { Body: { Text: { Data: `Nom : ${senderName} Adresse mail : ${senderEmail} Sujet : ${messageSubject} Message : ${message}` }, }, Subject: { Data: `${messageSubject} (${senderName})` }, }, Source: "formsender@emailaddress.com", // 正确设置带显示名称的Reply-To地址 ReplyTo: [ { Name: senderName, Address: senderEmail } ] }; return ses.sendEmail(params).promise(); };
注意事项
- 确保
senderEmail是合法的邮箱格式,SES会对邮件地址进行格式校验 - 上述写法适用于你当前使用的AWS SDK v2(
require("aws-sdk")),如果后续升级到SDK v3,参数格式会有所区别
内容的提问来源于stack exchange,提问作者benoitaguesse
相关产品推荐
相关产品推荐

