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

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 - 批量发送短信

(全文完)

相关推荐
reasonsummer几秒前
【办公类-115-05】20250920职称资料上传04——PDF和PDF合并PDF、图片和PDF合并PDF(十三五PDF+十四五图片)
java·python·pdf
Mcband2 分钟前
Apache Commons IO:文件流处理利器,让Java IO操作更简单
java·开发语言·apache
缺点内向2 分钟前
Java:将 Word 文档转换为密码保护的 PDF 文件
java·pdf·word
IT_陈寒27 分钟前
JavaScript性能飞跃:5个V8引擎优化技巧让你的代码提速300%
前端·人工智能·后端
骑士雄师38 分钟前
Java 泛型中级面试题及答案
java·开发语言·面试
Victor35640 分钟前
Redis(61)Redis的连接数上限是多少?
后端
Victor35644 分钟前
Redis(60) Redis的复制延迟如何优化?
后端
.格子衫.6 小时前
Spring Boot 原理篇
java·spring boot·后端
多云几多7 小时前
Yudao单体项目 springboot Admin安全验证开启
java·spring boot·spring·springbootadmin
Jabes.yang9 小时前
Java求职面试实战:从Spring Boot到微服务架构的技术探讨
java·数据库·spring boot·微服务·面试·消息队列·互联网大厂