Flask實戰第41天:發送短信驗證碼

本項目使用的短信運營商是阿里雲。使用淘寶帳號登陸阿里雲控制檯。在「產品與服務」中搜索「短信」進入短信服務python

獲取AccessKeyjson

輸入子帳戶用戶名api

權限選擇管理短信服務瀏覽器

 

 

簽名管理:申請簽名ide

模板管理:設置模板工具

 

下載發送短信Python SDKui

下載的壓縮包爲:dysms_python.zip阿里雲

加壓後,進入項目虛擬環境,進入到dysms_python目錄,進行安裝編碼

在項目工具包utrils新建個python package命名爲aliyunsmsspa

把dysms_python目錄中的如下文件或目錄拷貝到aliyunsms

 

把demo_sms_send.py修更名字爲sms_send.py,裏面的代碼修改後爲

import sys
from aliyunsdkdysmsapi.request.v20170525 import SendSmsRequest
from aliyunsdkdysmsapi.request.v20170525 import QuerySendDetailsRequest
from aliyunsdkcore.client import AcsClient
import uuid
from aliyunsdkcore.profile import region_provider
import json
from aliyunsdkcore.http import method_type as MT
from aliyunsdkcore.http import format_type as FT


# 注意:不要更改
REGION = "cn-hangzhou"
PRODUCT_NAME = "Dysmsapi"
DOMAIN = "dysmsapi.aliyuncs.com"


#阿里大魚相關配置
ACCESS_KEY_ID = '填寫你本身的'
ACCESS_KEY_SECRET = '填寫你本身的'
SING_NAME = "你的短信簽名"
TEMPLATE_CODE = "填寫你本身的模板CODE"

acs_client = AcsClient(ACCESS_KEY_ID, ACCESS_KEY_SECRET, REGION)
region_provider.add_endpoint(PRODUCT_NAME, REGION, DOMAIN)


def send_sms(phone_numbers, template_param=None):
    smsRequest = SendSmsRequest.SendSmsRequest()
    # 申請的短信模板編碼,必填
    smsRequest.set_TemplateCode(TEMPLATE_CODE)

    # 短信模板變量參數
    if template_param is not None:
        smsRequest.set_TemplateParam(template_param)

    # 設置業務請求流水號,必填。
    business_id = uuid.uuid1()
    smsRequest.set_OutId(business_id)

    # 短信簽名
    smsRequest.set_SignName(SING_NAME)

    # 數據提交方式
    # smsRequest.set_method(MT.POST)

    # 數據提交格式
    # smsRequest.set_accept_format(FT.JSON)

    # 短信發送的號碼列表,必填。
    smsRequest.set_PhoneNumbers(phone_numbers)

    # 調用短信發送接口,返回json
    smsResponse = acs_client.do_action_with_exception(smsRequest)

    # TODO 業務處理

    return smsResponse


if __name__ == '__main__':

    # print(__business_id)
    params = {
        'code': 1234
    }
    # params = u'{"name":"wqb","code":"12345678","address":"bz","phone":"13000000000"}'
    print(send_sms("13xxxxxxxxx", json.dumps(params)))

 

把發送短信也放到common裏面去,編輯common.views.py中寫個視圖

...
from utils.aliyunsms.send_sms import send_sms
import json

@bp.route('/sms_captcha/')
def sms_captcha():
    params = {'code':'abcd'} #abcd就是發發送的驗證碼,code就是模板中定義的變量
    result = send_sms('你接收短信的手機號碼', json.dumps(params))
    if result:
        return '發送成功'
    else:
        return '發送失敗'

訪問瀏覽器:http://127.0.0.1:/sms_captcha/

你的手機應該成功收到短信了,和以前定義的模板同樣

相關文章
相關標籤/搜索