使用阿里云短信服务实现手机验证码发送

使用阿里云短信服务实现手机验证码发送

手机验证码是注册、登录、身份验证中常见的环节。我们可以使用阿里云短信服务快速实现验证码的发送功能。

一、开通阿里云短信服务

  • 登录阿里云控制台
  • 开通短信服务并获取 AccessKey
  • 配置短信签名与模板

二、引入依赖

pom.xml 中添加短信 SDK 依赖:

<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-java-sdk-core</artifactId>
    <version>4.5.3</version>
</dependency>
<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-java-sdk-dysmsapi</artifactId>
    <version>2.1.0</version>
</dependency>

三、Java 代码示例

public class SmsService {

    public static void sendSms(String phoneNumber, String code) {
        IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", "your-access-key-id", "your-access-key-secret");
        DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", "Dysmsapi", "dysmsapi.aliyuncs.com");
        IAcsClient client = new DefaultAcsClient(profile);

        SendSmsRequest request = new SendSmsRequest();
        request.setPhoneNumbers(phoneNumber);
        request.setSignName("你的短信签名");
        request.setTemplateCode("SMS_123456789");
        request.setTemplateParam("{"code":"" + code + ""}");

        try {
            SendSmsResponse response = client.getAcsResponse(request);
            System.out.println("发送状态:" + response.getCode());
        } catch (ClientException e) {
            e.printStackTrace();
        }
    }
}

四、验证码生成

public static String generateCode() {
    Random random = new Random();
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < 6; i++) {
        sb.append(random.nextInt(10));
    }
    return sb.toString();
}

五、发送示例

String phone = "13800001111";
String code = generateCode();
sendSms(phone, code);

六、注意事项

  • 确保模板参数与模板内容匹配
  • 避免频繁发送导致限流
  • 验证码可结合 Redis 设置有效期

七、总结

通过阿里云短信 SDK,可以快速构建验证码发送功能,为登录、注册提供安全保障。

posted @ 2025-05-31 19:50  元始天尊123  阅读(182)  评论(0)    收藏  举报