短信验证功能、邮箱验证功能

编程入门 行业动态 更新时间:2024-10-24 18:28:18

发送短信

需要借助第三方平台来发送短信,如阿里云、云通讯(对python3不友好)、腾讯云。在这里用的是腾讯云来作为示例

腾讯云中短信准备工作

1. 腾讯云官网注册、实名认证、登录(不废话、跳过)

2. 点击页面右上角“控制台”

3. 点击导航栏的云产品,可以看到各种产品,找到“短信”。第一次使用会调到“申请开通页面”,勾选同意、开始接入。(这是个人认证,企业认证还需要一些相关的认证材料)

4. 接入后有三大功能:应用列表、套餐包管理、SDK & API.

* 应用列表:管理应用的;
* 套餐包管理:管理套餐包的;
* SDK & API:就是一些相关的指南手册(开发指南);

5. 在应用列表页“添加应用”,添加后点进去(如应用名:技术栈)

6. 来到国内短信,点击短信内容配置

7. 短信签名 -> 创建签名:要用到微信公众号或小程序(微信公众号注册,首页截图),填写见图创建签名

8. 短信正文 -> 创建正文模板:填写见图短信正文。

9. 等待审核


后台开发

更多短信发送参考SDK & API中的开发指南:文档中心 > 短信 > SDK文档 > Python SDK https://cloud.tencent/document/product/382/11672

配置SDK

pip install qcloudsms_py

准备必要参数

# 短信应用 SDK AppID 以1400开头
appid = 1400009099  
# 短信应用 SDK AppKey 根据自己的短信应用配置
appkey = "9ff91d87c2cd7cd0ea762f141975d1df37481d48700d70ac37470aefc60f9bad"
# 需要发送短信的手机号码(非必填项,可在你的开发代码中传入)
phone_numbers = ["21212313123", "12345678902", "12345678903"]
# 短信模板ID,真实的模板 ID 需要在短信控制台中申请
template_id = 7839  # 这里的模板 ID`7839`只是示例,
# 签名,使用的是`签名内容`,而不是`签名ID`。这里的签名"腾讯云"只是示例,真实的签名需要在短信控制台中申请
sms_sign = "腾讯云"  # 发写个空字符串也行

指定模板 ID 单发短信

import random
from utils.logging import logger
from .settings import *
from qcloudsms_py import SmsSingleSender
ssender = SmsSingleSender(appid, appkey)
# 生成验证码
def get_code():
    code = ''
    for i in range(4):
        code += str(random.randint(0, 9))
    return code

def send_sms(mobile, code, exp):
    """
    发送短信
    :param mobile: 电话号码
    :param code: 验证码
    :param exp: 过期时间
    :return:
    """
    try:
        response = ssender.send_with_param(86, mobile, template_id, (code, exp), sign=sms_sign, extend="", ext="")
        # 短信发送成功的标识:没有异常且response大字典中的result为0
        if response and response['result']==0:
            return True
        logger.error('sms error: %s'% response['errmsg'])
        return
    except Exception as e:
        logger.error("sms error: %s" % e)
        return False
    
if __name__ == '__main__':
    code = get_code()
    print(code)
    result = send_sms('xxxxxxx',code,'1')  # 电话号码,验证码,过期时间
    print(result)

邮箱验证功能


from email.header import Header
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.base import MIMEBase
from email.mime.multipart import MIMEMultipart
from email import encoders
import smtplib
import time

class EmailPro:
    def send_mail(self, to_email, code):
        email_host = 'smtp.163'  # 服务器地址 163邮箱"smtp.163"  qq邮箱"smtp.qq"都需要开通smtp权限
        sender = 'xxx@163'  # 发件人(自己的邮箱)
        password = 'xxx'  # 邮箱授权码
        receiver = 'xxx@qq'  # 收件人
        msg = MIMEMultipart()
        now = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
        subject = now + '邮箱激活'
h = Header('发件人昵称自定义', 'utf-8')
    h.append('<xxx@163>', 'ascii')
    msg["From"] = h
    msg['Subject'] = subject  # 标题
    msg['To'] = 'xxx'  # ...收件人...

    signature = '''
\n\t You are most welcome!
\n\t 点击下面的按钮激活邮箱
'''
    # text = MIMEText(signature, 'plain')  # 签名
    # msg.attach(text)

    # 正文-图片 只能通过html格式来放图片,所以要注释25,26行
    mail_msg = f'''
    
<p>\n\t You are most welcome!</p>
<p>\n\t 点击下面的按钮激活邮箱</p>
<button style="background-color: #31708f; border-radius: 3px"><a href="http://127.0.0.1:8000/user/email/active/?email={to_email}&code={code}" style="color: white;font-size: 25px;text-decoration: none">激活邮箱</a></button>
<p><img src="cid:image1"></p>
'''
    msg.attach(MIMEText(mail_msg, 'html', 'utf-8'))
    # 指定图片为当前目录
    fp = open(r'E:\rent_house\media\banner\3.jpg', 'rb')
    msgImage = MIMEImage(fp.read())
    fp.close()
    # 定义图片 ID,在 HTML 文本中引用
    msgImage.add_header('Content-ID', '<image1>')
    msg.attach(msgImage)

    # ctype = 'application/octet-stream'
    # maintype, subtype = ctype.split('/', 1)
    # 附件-图片
    # image = MIMEImage(open(r'E:\rent_house\media\banner\3.jpg', 'rb').read(), _subtype=subtype)
    # image.add_header('Content-Disposition', 'attachment', filename='img.jpg')
    # msg.attach(image)
    # 附件-文件
    # file = MIMEBase(maintype, subtype)
    # file.set_payload(open(r'E:\rent_house\apps\utils\response.py', 'rb').read())
    # file.add_header('Content-Disposition', 'attachment', filename='test.txt')
    # encoders.encode_base64(file)
    # msg.attach(file)

    # 发送
    smtp = smtplib.SMTP()
    smtp.connect(email_host, 25)
    smtp.login(sender, password)
    smtp.sendmail(sender, to_email, msg.as_string())
    smtp.quit()
    print('success')
email_worker = EmailPro()

转载于:https://wwwblogs/bladecheng/p/11565611.html

更多推荐

短信验证功能、邮箱验证功能

本文发布于:2023-06-11 03:39:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1379992.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:功能   邮箱   短信

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!