在AWS Lambda中使用SES发送带Reply-To头的邮件报错,如何正确配置?
在AWS Lambda中使用SES正确配置Reply-To邮件头的方法
这个问题很常见,你遇到的UnexpectedParameter错误是因为AWS SES的sendEmail API并不支持直接传入Header参数——SES为常见的邮件头(比如Reply-To)提供了专门的配置字段,不需要手动去构造自定义header。
正确的配置方法
SES的sendEmail API里,Reply-To地址需要放在Message对象下的ReplyToAddresses数组中,而不是额外加Header字段。修正后的代码如下:
const params = { Destination: { ToAddresses: ["xxx@xxx.com"] }, Message: { Body: { Html: { Charset: "UTF-8", Data: htmlBody }, Text: { Charset: "UTF-8", Data: textBody } }, Subject: { Charset: "UTF-8", Data: "My title" }, // 在这里设置Reply-To地址,支持多个地址 ReplyToAddresses: ["hello@gmail.com"] }, Source: "sender@xxx.com" // 注意:Source必须是SES已验证的邮箱/域名 }; // 创建SES服务对象并发送邮件 const sendPromise = new AWS.SES({ apiVersion: "2010-12-01", region: 'us-east-1' }) .sendEmail(params) .promise(); // 处理发送结果 sendPromise .then(data => console.log("邮件发送成功,MessageId:", data.MessageId)) .catch(err => console.error("邮件发送失败:", err));
关键注意事项
- Source参数验证:
Source里的邮箱地址或域名必须在AWS SES控制台完成验证,否则SES会拒绝发送请求。 - 自定义邮件头的特殊情况:如果需要设置非标准的自定义邮件头(比如
X-Custom-Header这类),那你需要改用sendRawEmailAPI,因为sendEmail只支持预设的几个常用邮件头字段。sendRawEmail需要你构造完整的MIME格式邮件内容,包括所有自定义头。
内容的提问来源于stack exchange,提问作者Atul Sharma
相关产品推荐
相关产品推荐

