转载请注明原文地址:https://www.cnblogs.com/cnodoo/p/9281581.html

一:阿里云短信服务注册

1:开通短信业务:实名认证的个人用户是免费开通;企业用户需要提供三证(营业执照、组织机构代码证、税务登记证)

2:创建用户,生成AccessKey,记得下载并保存起来。只有在创建的时候可以下载!

3:为用户授权

4:创建签名和短信模版,一般两小时内就可以审核通过

二:SDK下载

下载地址:https://help.aliyun.com/document_detail/55359.html

三:要用到的文件

1)api_sdk/aliyun-python-sdk-core/aliyunsdkcore

2)api_sdk/aliyun-python-sdk-dysmsapi/aliyunsdkdysmsapi

把aliyunsdkcore和aliyunsdkdysmsapi拷贝到项目中,然后在同级目录下,新建 aliyun_sms.py文件,在里面定义短信发送和短信查询的方法:

# -*- coding: utf-8 -*-
import sys
from aliyunsdkdysmsapi.request.v20170525 import SendSmsRequest
from aliyunsdkdysmsapi.request.v20170525 import QuerySendDetailsRequest
from aliyunsdkcore.client import AcsClient
import uuid
import json
"""
短信业务调用接口
"""

reload(sys)
sys.setdefaultencoding('utf8')

#不要更改
REGION = "cn-hangzhou"

# ACCESS_KEY_ID/ACCESS_KEY_SECRET 根据实际申请的账号信息进行替换
ACCESS_KEY_ID = "你创建的RAM用户的ACCESS_KEY_ID"
ACCESS_KEY_SECRET = "你创建的RAM用户的ACCESS_KEY_SECRET"

acs_client = AcsClient(ACCESS_KEY_ID, ACCESS_KEY_SECRET, REGION)

class AliSMS(object):
    #发送短信
    def send_sms(self, business_id, phone_numbers, sign_name, template_code, template_param=None):
        smsRequest = SendSmsRequest.SendSmsRequest()
        #1:设置短信模板编码
        smsRequest.set_TemplateCode(template_code)

        #2:传递短信模板变量参数 {"code":"值"}
        if template_param is not None:
            smsRequest.set_TemplateParam(template_param)

        #3:设置业务请求流水号,必填。
        smsRequest.set_OutId(business_id)

        #4:设置短信签名
        smsRequest.set_SignName(sign_name);

        #5:设置短信发送的号码列表(一个就是单发,数组就是群发)
        smsRequest.set_PhoneNumbers(phone_numbers)

        #6:调用短信发送接口,获得返回json响应数据
        smsResponse = json.loads(acs_client.do_action_with_exception(smsRequest))

        return smsResponse

    #查询短信
    def query_send_detail(self, biz_id, phone_number, page_size, current_page, send_date):
        queryRequest = QuerySendDetailsRequest.QuerySendDetailsRequest()

        # 查询的手机号码
        queryRequest.set_PhoneNumber(phone_number)
        # 流水号
        # queryRequest.set_BizId(biz_id)
        # 发送日期 支持30天内记录查询,格式yyyyMMdd
        queryRequest.set_SendDate(send_date)
        # 必填-当前页码从1开始计数
        queryRequest.set_CurrentPage(current_page)
        # 必填-页大小
        queryRequest.set_PageSize(page_size)

        # 调用短信记录查询接口,返回json
        queryResponse = json.loads(acs_client.do_action_with_exception(queryRequest))

        return queryResponse

四:调用示例

# -*- coding: utf-8 -*-

from Ali_sms import *

class TestSMS(object):
    ali_sms = AliSMS()

    if __name__ == '__main__':
__business_id = uuid.uuid1()       params = "{\"code\":\"2222\"}"       response = ali_sms.send_sms(__business_id, "电话", "签名Name", "模版ID", params)       BizId = response["BizId"]       detail = ali_sms.query_send_detail(BizId, "电话", 10, 1,datetime.datetime.now().strftime('%Y%m%d'))

五:短信发送错误码和回执状态码

错误码解读:https://help.aliyun.com/knowledge_detail/57717.html

状态码:https://help.aliyun.com/document_detail/55323.html

Odoo发送短信的更多相关文章

  1. PHP发送短信功能

    发送短信的功能主要在于获得短信接口后,在函数中模仿用户行为,例如浏览器跳转输出短信接口的链接. 需要运用的函数为 curl_init(); curl_setopt(); curl_exec(); cu ...

  2. WPF MVVM下做发送短信小按钮

    最近做一个项目,因为涉及到注册,因此需要发送短信,一般发送短信都有一个倒计时的小按钮,因此,就做了一个,在此做个记录. 一.发送消息 没有调用公司的短信平台,只是模拟前台生成一串数字,将此串数字输出一 ...

  3. NetCore 阿里大于发送短信

    使用阿里大于API发送短信,但阿里没有提供NetCore 的API,自己看了下源码重写了发短信这个部分 public class MessageSender { private readonly st ...

  4. android 中调用接口发送短信

    android中可以通过两种方式发送短信 第一:调用系统短信接口直接发送短信:主要代码如下: //直接调用短信接口发短信 SmsManager smsManager = SmsManager.getD ...

  5. Android 学习第13课,android 实现发送短信的功能

    1. 界面布局 界面代码: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" ...

  6. ios调用本地拨打电话,发送短信

    电话.短信是手机的基础功能,iOS中提供了接口,让我们调用.这篇文章简单的介绍一下iOS的打电话.发短信在程序中怎么调用. 1.打电话   [[UIApplication sharedApplicat ...

  7. Android发送短信核心代码

    核心代码:(1)SmsManager manager = SmsManager.getDefault(); //获得默认的消息管理器(2)ArrayList<String> list = ...

  8. Android发送短信

    // 发送短信 public void sendMsg(){ String content = edtSend.getText().toString(); SmsManager smsManager ...

  9. a标签的妙用-拨打电话、发送短信、发送邮件

    前端时间在做手机WAP网站时,遇到需要点击页面上显示的电话号能直接拨号的需求,查找资料发现可以使用html的a标签完美实现该需求!记录下来以备后用...... 目前主流手机浏览器对H5的支持已经很不错 ...

随机推荐

  1. CSS选择器深入探讨(细节东西)(转)

    细节决定成败,越是注重细节方面的东西,那么你完成的作品就越完美. 1.父子选择器(看作组合比较好理解) 父子选择器可以有多级(但是在实际开发中最后不好超过三层) 如:html中文件片段: <!- ...

  2. python开发必备神器 Virtualenv及管理工具Virtualenvwrapper

    如果在一台机器上,想开发多个不同的项目,需要用到同一个包的不同版本,如果还在本地继续安装,在同一个目录下安装或者更新,其它的项目必须就无法运行了,怎么办呢? 解决方案:虚拟环境 虚拟环境可以搭建独立的 ...

  3. 【代码笔记】iOS-单击手势的添加

    一,效果图. 二,工程图. 三,代码. RootViewController.h #import <UIKit/UIKit.h> @interface RootViewController ...

  4. 关于vue2用vue-cli搭建环境后域名代理的http-proxy-middleware解决api接口跨域问题

    在vue中用http-proxy-middleware来进行接口代理,比如:本地运行环境为http://localhost:8080但真实访问的api为 http://www.baidu.com这时我 ...

  5. JavaScript 常见面试题

    此文内容多为 JavaScript 对数组理解及运用. 1.如何消除一个数组里面重复的元素? var arr = [1, 2, 3, 3, 4, 4, 5, 5, 6, 1]; var newArr ...

  6. ionic开发中遇到的问题

    开发调试过程中,会遇到这样的问题:同源策略请求url禁止请求. 一   网上搜的结果基本是2类: 1. 同源策略请求被阻止, 跨域问题,大家建议添加Access-Control-Allow-Origi ...

  7. Burp Suite插件推荐

    BurpSuiteHTTPSmuggler 网址 https://github.com/nccgroup/BurpSuiteHTTPSmuggler 作用 利用 中间件对 HTTP 协议的实现的特性 ...

  8. 安卓脱壳&&协议分析&&burp辅助分析插件编写

    前言 本文由 本人 首发于 先知安全技术社区: https://xianzhi.aliyun.com/forum/user/5274 前言 本文以一个 app 为例,演示对 app脱壳,然后分析其 协 ...

  9. setUserVisibleHint-- fragment真正的onResume和onPause方法

    现在越来越多的应用会使用viewpager+fragment显示自己的内容页,fragment和activity有很多共同点,如下图就是fragment的生命周期 但是fragment和activit ...

  10. winform listbox 使用DrawMode使用OwnerDrawVarialbe或OwnerDrawFixed无水平滚动条

    因为需要使用DrawMode自行DrawItem,所以需要将DrawMode设置为OwnerDrawVarialbe或OwnerDrawFixed模式,代码如下: private void listB ...