Python3 Flask 应用中使用阿里短信发送

ops/2024/11/25 9:12:58/

代码大部分都是官网提供的,稍做了一点修改。 
需要申请 access_key_id 和 access_key_secret 很简单这里就不絮叨了,如果你不会私信我,我教你。
 

安装命令

python">pip install alibabacloud_dysmsapi20170525==3.1.0
python"># -*- coding: utf-8 -*-
from alibabacloud_dysmsapi20170525.client import Client as Dysmsapi20170525Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_dysmsapi20170525 import models as dysmsapi_20170525_models
from alibabacloud_tea_util import models as util_models
from alibabacloud_tea_util.client import Client as UtilClientclass SmsClient:def __init__(self, access_key_id: str, access_key_secret: str, endpoint: str = 'dysmsapi.aliyuncs.com'):"""初始化阿里云短信客户端:param access_key_id: 阿里云AccessKey ID:param access_key_secret: 阿里云AccessKey Secret:param endpoint: API服务端点,默认为'dysmsapi.aliyuncs.com'"""self.access_key_id = access_key_idself.access_key_secret = access_key_secretself.endpoint = endpointdef create_client(self) -> Dysmsapi20170525Client:"""使用AccessKey初始化账号Client:return: Dysmsapi20170525Client实例"""config = open_api_models.Config(access_key_id=self.access_key_id,access_key_secret=self.access_key_secret)config.endpoint = self.endpointreturn Dysmsapi20170525Client(config)def send_sms(self, phone_number: str, code: str) -> bool:"""发送短信:param phone_number: 接收短信的手机号(多个号码以逗号分隔):param code: 验证码:return: 返回是否成功的布尔值"""client = self.create_client()send_sms_request = dysmsapi_20170525_models.SendSmsRequest(phone_numbers=phone_number,sign_name='你的签名',template_code='你的模板号',template_param=f'{{"code":"{code}"}}')try:# 发送短信请求response = client.send_sms_with_options(send_sms_request, util_models.RuntimeOptions())print(response.status_code)print(f"Response Body: {response.body}")response_dict = vars(response.body)code = response_dict.get('code')message = response_dict.get('message')# 判断响应的状态if response.status_code == 200 and message == 'OK' and code == 'OK':print("短信发送成功")return True  # 短信发送成功else:print(f"短信发送失败,错误码: {response_dict.get('code')}")return False  # 短信发送失败except Exception as error:# 错误处理print(f"发送短信失败: {error.message}")print(f"建议操作: {error.data.get('Recommend')}")UtilClient.assert_as_string(error.message)return False  # 发生异常时返回失败

在Flask应用中直接调用

python">from SmsClient类所在的文件 import SmsClient
# 随机生成4位数字    
random_number = random.randint(1000, 9999)
access_key_id = '你自己的access_key'
access_key_secret = '你自己的access_key_secret'
sms_client = SmsClient(access_key_id, access_key_secret)
success = sms_client.send_sms(phone_number, str(random_number))

 


http://www.ppmy.cn/ops/136526.html

相关文章

HARCT 2025 新增分论坛7:机器人和自动化的新趋势

会议名称:机电液一体化与先进机器人控制技术国际会议 会议简称:HARCT 2025 大会时间:2025年1月3日-6日 大会地点:中国桂林 主办单位:桂林航天工业学院、广西大学、桂林电子科技大学、桂林理工大学 协办单位&#…

网络爬虫——爬虫项目案例

本节将全面讲解如何通过实战爬虫项目解决复杂问题。结合最新技术和实际开发需求,案例将涵盖完整开发流程,包括需求分析、实现代码、优化方法和常见问题解决。力求实现高效、可扩展的爬虫项目架构,帮助开发者提升实战能力。 案例 1&#xff1a…

局域网与广域网:探索网络的规模与奥秘(3/10)

一、局域网的特点 局域网覆盖有限的地理范围,通常在几公里以内,具有实现资源共享、服务共享、维护简单、组网开销低等特点,主要传输介质为双绞线,并使用少量的光纤。 局域网一般是方圆几千米以内的区域网络,其特点丰富…

Python 使用 Token 认证方案连接 Kubernetes (k8s) 的详细过程

在 Kubernetes 中,使用 Token 认证是一种常见的客户端身份验证方式,尤其适用于 ServiceAccount。以下是详细的步骤,包括如何查看 Token、获取 API 服务地址、配置远程连接,以及如何在 Python 中连接 k8s。 1. 获取 Token 首先&a…

MyBatis框架-动态SQL-XML中的常用标签+特殊字符在XML中的显示

一、if标签、where标签、trim标签、choose标签、set标签、foreach标签 1、问题引入:where关键字和and关键字在动态SQL里面应该如何添加? (1)if标签: test属性的值是判断条件 if标签里面的内容是条件成立时添加到SQ…

Elasticsearch实战应用:构建高效搜索与分析平台

Elasticsearch实战应用:构建高效搜索与分析平台 在当今大数据时代,数据的量级已经达到了惊人的级别,动辄上亿甚至更多。对于这样的数据量,如何进行有效的搜索和分析成为了众多开发者和数据科学家关注的焦点。Elasticsearch&#…

SpringBoot多文件上传

多文件上传是在单文件上传的基础上修改而来&#xff0c;不了解单文件上传可以参考上一篇。以下在将修改部分展示如下&#xff1a; 一、修改upload.html文件&#xff1a; <!DOCTYPE html> <html> <head> <meta charset"UTF-8"> <title&g…

Selenium + 数据驱动测试:从入门到实战!

引言 在软件测试中&#xff0c;测试数据的多样性和灵活性对测试覆盖率至关重要。而数据驱动测试&#xff08;Data-Driven Testing&#xff09;通过将测试逻辑与数据分离&#xff0c;极大地提高了测试用例的可维护性和可扩展性。本文将结合Selenium这一流行的测试工具&#xff0…