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

AWS JS SDK v2调用sendCustomVerificationEmail提示不是函数问题咨询

问题解决方案
  • 原因1:AWS SDK v2版本过低
    sendCustomVerificationEmail 是较高版本的AWS SDK v2才支持的API,如果你本地安装的aws-sdk版本低于2.700.0,就会出现方法不存在的报错。
    解决方法:执行命令更新到最新的v2版本:
npm uninstall aws-sdk && npm install aws-sdk@latest

安装完成后检查package.json中aws-sdk的版本号为2.x.x即可。

  • 原因2:错误使用AWS SDK v3
    如果你安装的是AWS SDK v3(版本号为3.x.x),其API调用方式和v2完全不同,你当前的v2写法自然无法识别对应方法。
    解决方法:要么切换回v2版本使用现有代码,要么调整代码适配v3的调用逻辑。

  • 优化建议:实例化SES时指定API版本
    为了避免API兼容问题,实例化SES时可以显式指定稳定的API版本,降低适配风险。

修改后可正常运行的完整代码示例

const express = require("express");
const aws = require("aws-sdk");
require("dotenv").config();

const app = express();

aws.config.update({
  accessKeyId: process.env.AWS_ACCESS_KEY_ID,
  secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
  region: process.env.region
});

// 实例化SES时指定API版本
const ses = new aws.SES({ apiVersion: '2010-12-01' });

// 邮箱验证接口
app.get("/verify/:email", (req, res) => {
  const params = {
    EmailAddress: req.params.email,
    TemplateName: "SampleTemplate" // 确认模板已在对应区域的SES控制台创建完成
  };

  ses.sendCustomVerificationEmail(params, (err, data) => {
    if (err) {
      return res.status(500).send(err);
    }
    res.send(data);
  });
});

// 启动服务
const server = app.listen(8000, () => {
  const port = server.address().port;
  console.log("AWS SES example app listening on port", port);
});

额外注意:你创建的自定义验证模板必须和代码中配置的AWS区域一致,且发件邮箱/域名已经完成SES的身份验证,否则后续调用会返回权限/资源不存在类报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 20:48:02