You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js用Nodemailer调用AWS SES发件遇邮箱未验证错误求助

解决AWS SES + Nodemailer的“Email address is not verified”错误

这个错误我之前碰过好多次,核心原因是AWS SES新账户默认处于沙箱模式,这个模式下有严格的限制:

  • 发件人和收件人的邮箱/域名必须在指定区域(这里是US-EAST-1)完成验证
  • 每天发送邮件的数量有限制
  • 只能发给已验证的身份

下面是一步步的解决办法:

1. 验证你的邮箱/域名(US-EAST-1区域)

  • 登录AWS控制台,先切换到US-EAST-1区域(一定要选对,不同区域的验证身份不通用)
  • 找到SES服务,进入「已验证的身份」页面
  • 点击「创建身份」,选择你要验证的类型(邮箱或域名):
    • 如果是邮箱:输入发件人邮箱,AWS会发一封验证邮件到这个地址,点击邮件里的链接完成验证
    • 沙箱模式下,收件人邮箱也需要验证,同样添加收件人邮箱并完成验证步骤

2. 修正代码中的区域配置

你的代码里现在没指定区域,默认可能不是US-EAST-1,导致调用的区域和验证的区域不匹配,加上region参数就行:

const nodemailer = require('nodemailer');
var sesTransport = require('nodemailer-ses-transport');
var SESCREDENTIALS = { 
  accessKeyId : "XXX" , 
  secretAccessKey : "XXX" 
}; 
var transporter = nodemailer.createTransport(sesTransport({
  accessKeyId: SESCREDENTIALS.accessKeyId,
  secretAccessKey: SESCREDENTIALS.secretAccessKey,
  region: 'us-east-1' // 必须指定和验证一致的区域
}));

3. (可选)退出沙箱模式(如果需要给未验证收件人发邮件)

如果你的业务需要给任意用户发邮件,沙箱模式肯定不够用,得申请退出:

  • 在SES控制台找到「退出沙箱」的入口
  • 填写申请信息:说明你的邮件使用场景(比如用户通知、业务邮件等),确保信息真实清晰,AWS一般几个工作日就会审核通过

额外注意点

  • 检查你的IAM用户权限:确保该用户有SES发送邮件的权限,比如附加AmazonSESFullAccess策略,或者自定义允许ses:SendEmail、ses:SendRawEmail操作
  • 确认发件人邮箱和你验证的完全一致,大小写、拼写都不能出错,哪怕差一个字符都会报错

内容的提问来源于stack exchange,提问作者bhagyashree daiya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:16:24