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

如何通过Node.js服务器使用AWS SNS向未验证/未订阅用户发送短信与邮件?

解决方案:AWS SNS/SES 向未验证/未订阅用户发送消息

一、短信发送(突破SNS沙盒限制)

AWS SNS默认处于沙盒模式,仅允许向已验证的电话号码发送短信。要向任意号码发送,需切换到生产模式:

  1. 登录AWS控制台,进入SNS服务的短信管理页面
  2. 点击「请求提升发送限制」,填写申请信息(说明使用场景、预计发送量等),AWS审核通过后即可切换至生产模式
  3. 生产模式下需遵守合规要求:
    • 仅发送合法通知(如注册验证、交易提醒),禁止垃圾信息
    • 部分国家/地区需提前注册发送者ID或短信模板

Node.js 代码示例(AWS SDK v3)

const { SNSClient, PublishCommand } = require("@aws-sdk/client-sns");

// 初始化SNS客户端
const snsClient = new SNSClient({ region: "你的AWS区域" });

async function sendSMS(phoneNumber, message) {
  const params = {
    Message: message,
    PhoneNumber: phoneNumber, // 生产模式下可填写任意未验证号码
  };

  try {
    const data = await snsClient.send(new PublishCommand(params));
    console.log("短信发送成功:", data.MessageId);
    return data;
  } catch (err) {
    console.error("短信发送失败:", err);
    throw err;
  }
}

// 使用示例
sendSMS("+8613xxxxxxxxx", "欢迎注册我们的服务!");

二、邮件发送(改用AWS SES)

AWS SNS的邮件功能基于订阅机制,未订阅用户无法直接接收。若要向未订阅邮箱发送欢迎邮件,推荐使用AWS SES(Simple Email Service)——它专门用于发送事务性/营销邮件,支持向任意邮箱发送(需完成域名/邮箱验证)。

前置准备

  1. 进入AWS SES控制台,完成域名验证(或单个邮箱验证,适合测试)
  2. 若发送量较大,申请将SES从沙盒模式切换至生产模式

Node.js 代码示例(AWS SDK v3)

const { SESClient, SendEmailCommand } = require("@aws-sdk/client-ses");

// 初始化SES客户端
const sesClient = new SESClient({ region: "你的AWS区域" });

async function sendWelcomeEmail(toEmail) {
  const params = {
    Source: "你的验证邮箱/域名 <no-reply@yourdomain.com>", // 必须是已验证的发件地址
    Destination: {
      ToAddresses: [toEmail], // 可填写任意未订阅邮箱
    },
    Message: {
      Subject: {
        Data: "欢迎注册我们的服务",
        Charset: "UTF-8",
      },
      Body: {
        Html: {
          Data: "<h1>欢迎!</h1><p>感谢你注册我们的服务,期待你的使用。</p>",
          Charset: "UTF-8",
        },
        Text: {
          Data: "欢迎!感谢你注册我们的服务,期待你的使用。",
          Charset: "UTF-8",
        },
      },
    },
  };

  try {
    const data = await sesClient.send(new SendEmailCommand(params));
    console.log("邮件发送成功:", data.MessageId);
    return data;
  } catch (err) {
    console.error("邮件发送失败:", err);
    throw err;
  }
}

// 使用示例
sendWelcomeEmail("user@example.com");

注意事项

  • 无论是SNS短信还是SES邮件,都需确保内容合规,避免触发AWS反垃圾机制导致账号受限
  • 生产模式的申请需明确说明使用场景,AWS通常会在1-2个工作日内完成审核

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 19:16:13