阿里云发送国内短信怎样编程

1.准备:阿里云注册,新建用户并授权,获取appkey和secret,开通短信服务,申请资质签名模板,短信服务右下角openapi查看文档和下载实例,在线客服咨询遇到的问题

2.依赖引入:

        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>dysmsapi20170525</artifactId>
            <version>2.0.24</version>
        </dependency>
        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>tea-openapi</artifactId>
            <version>0.3.2</version>
        </dependency>
        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>tea-console</artifactId>
            <version>0.0.1</version>
        </dependency>
        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>tea-util</artifactId>
            <version>0.2.21</version>
        </dependency>

3.代码:

public com.aliyun.dysmsapi20170525.Client createClient() throws Exception {
        // 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。
        // 建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/378657.html。
        com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
                // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。
                .setAccessKeyId("appkey")
                // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
                .setAccessKeySecret("secret");
        // Endpoint 请参考 https://api.aliyun.com/product/Dysmsapi
        config.endpoint = "dysmsapi.aliyuncs.com";
        return new com.aliyun.dysmsapi20170525.Client(config);
    }

    public void sendNationSms(String... args_) {
        try {
            java.util.List<String> args = java.util.Arrays.asList(args_);
            com.aliyun.dysmsapi20170525.Client client = createClient();
            com.aliyun.dysmsapi20170525.models.SendSmsRequest sendSmsRequest = new com.aliyun.dysmsapi20170525.models.SendSmsRequest();
            sendSmsRequest.setSignName(args.get(0));
            sendSmsRequest.setPhoneNumbers(args.get(1));
            sendSmsRequest.setTemplateCode(args.get(2));
            sendSmsRequest.setTemplateParam(args.get(3));
            com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
            com.aliyun.dysmsapi20170525.models.SendSmsResponse resp = client.sendSmsWithOptions(sendSmsRequest, runtime);
            com.aliyun.teaconsole.Client.log(com.aliyun.teautil.Common.toJSONString(resp));
        } catch (TeaException error) {
            // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
            // 错误 message
            System.out.println(error.getMessage());
            // 诊断地址
            System.out.println(error.getData().get("Recommend"));
            com.aliyun.teautil.Common.assertAsString(error.message);
        } catch (Exception _error) {
            TeaException error = new TeaException(_error.getMessage(), _error);
            // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
            // 错误 message
            System.out.println(error.getMessage());
            // 诊断地址
            System.out.println(error.getData().get("Recommend"));
            com.aliyun.teautil.Common.assertAsString(error.message);
        }
    }

4.疑难解答:

RAM_PERMISSION_DENY 是阿里云RAM(Resource Access Management)中的一个权限状态,表示RAM用户在尝试访问某个资源时被拒绝,通常是由于该用户没有足够的权限。RAM是阿里云提供的权限管理服务,它允许您控制不同用户、角色对资源的访问权限。
当RAM用户尝试执行某个操作时,如果其不具备执行该操作所需的权限,服务会返回RAM_PERMISSION_DENY的错误码或错误信息。这可能是因为:
1.	权限不足:RAM用户没有被授予执行该操作的权限,可能是由于角色权限设置不正确,或者没有明确赋予该用户相应的权限。
2.	资源权限问题:用户可能对特定资源没有访问权限,这需要检查资源的权限策略,确保用户被允许访问。
3.	策略冲突:如果用户同时拥有多个策略,可能存在一个策略允许访问,而另一个策略拒绝访问,导致权限冲突。
4.	MFA要求:如果服务要求使用多因素认证(MFA)而用户未启用或未正确使用,也可能导致访问被拒绝。
要解决RAM_PERMISSION_DENY问题,需要检查和调整用户的权限策略,确保策略中包含了允许执行所需操作的语句。您可以登录阿里云控制台,通过RAM服务管理用户权限,或者联系管理员进行权限检查和配置。详细步骤和配置信息,可以参考阿里云官方文档管理RAM用户权限。


"SMS service is not activated" 表示短信服务未激活,这意味着您的阿里云账号尚未开启或配置短信服务。要解决这个问题,您可以按照以下步骤操作:
1.	确认服务开通:登录阿里云控制台,检查是否已经开通了短信服务。如果没有,您需要前往短信服务页面进行开通。
2.	账户权限检查:如果您是RAM用户,确保您的权限策略允许使用短信服务。如果权限不足,需要联系管理员为您添加相关权限。
3.	服务状态检查:在开通短信服务后,检查服务状态是否正常,是否存在欠费、服务暂停等情况。
4.	签名和模板审核:确保您的短信签名和模板已经审核通过。未通过审核的签名或模板将无法使用。您可以在短信服务控制台的签名管理或模板管理页面查看审核状态。
5.	API调用检查:如果使用API发送短信,确保您使用了正确的AccessKey和AccessKey Secret,并且签名和模板代码正确无误。
请根据上述步骤进行检查和配置,若问题依然存在,请详细描述您的操作过程和遇到的具体问题,以便提供更精确的解决方案。


创建AccessKey
更新时间:2024年5月17日 09:49:14
本文为您介绍如何创建RAM用户和阿里云账号(主账号)的访问密钥(AccessKey)。
什么是AccessKey
访问密钥AccessKey(简称AK)是阿里云提供给用户的永久访问凭据,一组由AccessKey ID和AccessKey Secret组成的密钥对。
•	AccessKey ID:用于标识用户。
•	AccessKey Secret:是一个用于验证您拥有该AccessKey ID的密码。
AccessKey ID和AccessKey Secret根据算法由访问控制(RAM)生成,阿里云对AccessKey ID和AccessKey Secret的存储及传输均进行加密。
AccessKey不用于控制台登录,用于通过开发工具(API、CLI、SDK、Terraform等)访问阿里云时,发起的请求会携带AccessKey ID和AccessKey Secret加密请求内容生成的签名,进行身份验证及请求合法性校验。
重要
•	阿里云账号(主账号)默认拥有当前账号下所有云资源的Administrator权限,且无法修改。阿里云账号(主账号)的AccessKey泄露会威胁该账号下所有资源的安全。为保证账号安全,强烈建议您不要给阿里云账号(主账号)创建AccessKey,建议您创建专用于API访问的RAM用户并创建对应的AccessKey,完成最小化授权后,通过编程的方式访问阿里云资源。
•	不要将AccessKey ID和AccessKey Secret保存到工程代码里,避免AccessKey泄露。更多关于凭据的安全使用建议,请参见凭据的安全使用方案。
创建RAM用户的AccessKey
前提条件
您可以使用以下账号创建RAM用户的AccessKey:
•	阿里云账号(主账号)。
•	RAM管理员(拥有AliyunRAMFullAccess权限的RAM用户)。
•	允许自主管理AccessKey的RAM用户。关于如何设置自主管理AccessKey的详情,请参见管理RAM用户安全设置。
使用限制
•	RAM用户的AccessKey Secret只在创建时显示,不支持查看,请妥善保管。如果AccessKey泄露或丢失,请删除并创建新的AccessKey。
•	每个RAM用户最多允许创建2个AccessKey。
操作步骤
1.	登录RAM控制台。
2.	在左侧导航栏,选择身份管理 > 用户。
3.	在用户页面,单击目标RAM用户名称。
4.	在认证管理页签下的AccessKey区域,单击创建AccessKey。
 
5.	根据界面提示完成安全验证。
6.	在创建AccessKey对话框,查看AccessKey ID和AccessKey Secret。
您可以单击下载CSV文件,下载AccessKey信息。单击复制,复制AccessKey信息。
 
7.	单击确定。
创建阿里云账号(主账号)的AccessKey
使用限制
•	2023年11月20日起阿里云账号(主账号)AccessKey不支持创建后再次查看AccessKey Secret。2023年7月5日前创建的阿里云账号(主账号)AccessKey尚未签署知情同意书的,控制台提供最后一次保存和下载的功能,确认保存后不能再次查看。
•	每个阿里云账号(主账号)最多允许创建5个AccessKey。
操作步骤
1.	使用阿里云账号(主账号)登录阿里云控制台。
2.	将鼠标悬浮在右上方的账号图标上,单击AccessKey管理。
 
3.	在安全提示对话框,阅读安全提示信息,然后单击继续使用AccessKey。
4.	在AccessKey页面,单击创建AccessKey。
 
5.	根据界面提示完成安全验证。
6.	在创建AccessKey对话框,查看AccessKey ID和AccessKey Secret。
您可以单击下载CSV文件,下载AccessKey信息。单击复制,复制AccessKey信息。
 
7.	选中我已保存好AccessKey Secret。
8.	单击确定。
相关文档
•	不使用主账号AccessKey
•	定期轮转RAM用户AccessKey
•	清理RAM用户的闲置AccessKey
•	RAM用户不能同时启用两个AccessKey
•	访问密钥(AccessKey)常见问题
•	凭据的安全使用方案
•	使用访问凭证访问阿里云OpenAPI最佳实践
•	AccessKey泄露处理方案



开通阿里云短信服务,您需要拥有一个阿里云账号并完成实名认证。然后,您可以按照以下步骤操作:
1.	登录阿里云控制台:首先访问阿里云官网,使用您的账号登录。
2.	进入短信服务控制台:在顶部搜索框中输入"短信服务"或直接访问短信服务控制台。
3.	开通服务:如果您是首次使用,系统会引导您开通短信服务。点击"立即开通"或相应按钮,按照页面提示完成开通流程。
4.	获取AccessKey:开通服务后,您需要AccessKey来调用短信服务API。您可以:
•	查看AccessKey:访问AccessKey查看。
•	创建AccessKey:访问创建AccessKey。
5.	配置短信模板和签名:在控制台中,您需要创建短信签名和模板,这些是发送短信的前提。
6.	开始使用:完成以上步骤后,您就可以在您的应用程序中使用阿里云短信服务SDK来发送短信了。
请确保遵循阿里云的服务条款和相关的法律法规,以确保短信服务的合规使用。如果您在操作过程中遇到任何问题,可以随时联系阿里云客服获取帮助。


国内短信接口使用 SendSms - 发送短信 SendBatchSms - 批量发送短信

(全文完)

相关推荐
喵叔哟16 分钟前
重构代码中引入外部方法和引入本地扩展的区别
java·开发语言·重构
尘浮生22 分钟前
Java项目实战II基于微信小程序的电影院买票选座系统(开发文档+数据库+源码)
java·开发语言·数据库·微信小程序·小程序·maven·intellij-idea
tian2kong34 分钟前
Centos 7 修改YUM镜像源地址为阿里云镜像地址
linux·阿里云·centos
郑祎亦1 小时前
Spring Boot 项目 myblog 整理
spring boot·后端·java-ee·maven·mybatis
不是二师兄的八戒1 小时前
本地 PHP 和 Java 开发环境 Docker 化与配置开机自启
java·docker·php
爱编程的小生1 小时前
Easyexcel(2-文件读取)
java·excel
本当迷ya1 小时前
💖2025年不会Stream流被同事排挤了┭┮﹏┭┮(强烈建议实操)
后端·程序员
带多刺的玫瑰1 小时前
Leecode刷题C语言之统计不是特殊数字的数字数量
java·c语言·算法
计算机毕设指导62 小时前
基于 SpringBoot 的作业管理系统【附源码】
java·vue.js·spring boot·后端·mysql·spring·intellij-idea
Gu Gu Study2 小时前
枚举与lambda表达式,枚举实现单例模式为什么是安全的,lambda表达式与函数式接口的小九九~
java·开发语言