現在注冊會員要麼就是郵箱激活,要麼就是發送短信驗證碼
郵箱很簡單,在163或者qq郵箱開啟smtp伺服器,然後使用django内置的smtp子產品,配置一些郵箱參數,加入celery異步任務發送郵件就行了,今天這篇文章主要講一下短信驗證碼服務
我們采用阿裡雲短信服務
進入到aliyun短信服務頁面
直接用支付寶賬号登入
登入後在滑鼠懸停在頭像這裡,裡面有個accesskeys的功能,點進去就可以進入如上的界面,生成accesskey
然後在建立你自己的簽名以及模闆,按裡面的要求建立就行,然後等待他們稽核通過,一般要幾個小時的時間
在幫助文檔中找到python的API文檔
下載下傳SDK檔案
下載下傳python版本的,下載下傳好之後解壓
将這個檔案放到你環境的site_packages中
然後執行pip setup.py install安裝
把這兩個檔案放入項目中
demo_sms_send我改名成了aliyunsms.py
然後優化一下demo的代碼
import json
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
from aliyunsdkcore.http import method_type as MT
from aliyunsdkcore.http import format_type as FT
# try:
# reload(sys)
# sys.setdefaultencoding('utf8')
# except NameError:
# pass
# except Exception as err:
# raise err
# 注意:不要更改
REGION = "cn-hangzhou"
PRODUCT_NAME = "Dysmsapi"
DOMAIN = "dysmsapi.aliyuncs.com"
ACCESS_KEY_ID = 'LTAI4**********yp5ZVe'
ACCESS_KEY_SECRET = 'zBme1B1************mYYd062'
acs_client = AcsClient(ACCESS_KEY_ID, ACCESS_KEY_SECRET, REGION)
region_provider.add_endpoint(PRODUCT_NAME, REGION, DOMAIN)
def send_sms(phone_numbers,code):
business_id = uuid.uuid1()
sign_name = "Kevin個人網站"
template_code = 'SMS_174725054'
template_param = json.dumps({"code":code})
smsRequest = SendSmsRequest.SendSmsRequest()
# 申請的短信模闆編碼,必填
smsRequest.set_TemplateCode(template_code)
# 短信模闆變量參數
if template_param is not None:
smsRequest.set_TemplateParam(template_param)
# 設定業務請求流水号,必填。
smsRequest.set_OutId(business_id)
# 短信簽名
smsRequest.set_SignName(sign_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
我把其他的參數都寫死了,隻留了電話和驗證碼兩個參數
然後可以放入視圖中調用
def mess(request):
result = send_sms('185******11','3231')
print(result)
return HttpResponse('ok')
結果:
手機收到驗證碼,記得你們實驗的時候充幾塊錢,不然發送不成功
python短信接口API文檔
我這裡隻是實作了一個簡單的demo,參數都在文檔中,大家可以點選看看。
我們其實還可以将發送短信的這個函數注冊為celery的異步任務,然後delay調用,不會的可以檢視我的其他關于celery的文章