zoukankan      html  css  js  c++  java
  • python 短信邮件

    短信邮件

     hashlib

    - md5:非对称加密,不可逆的,经常用于加密密码然后存储

    - 示例:

    ```python
     import hashlib
    ​
      # 创建hash对象,可以指定需要加密的字符串
      md = hashlib.md5('123456'.encode('utf-8'))
    ​
      # 设置加密字符串,创建md5对象就不必指定了,不能两个地方都指定
      # md.update('123456'.encode('utf-8'))
    # 获取加密后的字符串(32位)
      print(md.hexdigest())

    urllib

    • 说明:

      • URI:统一资源标识符

      • URL:统一资源定位符,URI的一种形式,如:http://www.baidu.com:80?name=xiaoming&age=10

    • 示例:

      
      
      from urllib.parse import urlencode
      ​
      d = {'name':'dahua', 'age':18}
      ​
      print(d)
      # 转换为:name=dahua&age=18
      print(urlencode(d))
      ​
      from urllib.parse import urlparse
      ​
      url = 'http://www.baidu.com:80/abc/def?page=3&size=5&like=1&like=2'# 解析出url中所有的参数
      p = urlparse(url)
      print(p)
      ​
      # 请求参数
      print(p.query)
      ​
      from urllib.parse import parse_qs
      ​
      # 将url请求参数转换为字典
      ​
      d = parse_qs(p.query)
      print(d)
      ​

    http.client

    • 说明:可以模拟浏览器发送http请求(是爬虫的基础)

    • 示例:

      
      
      import http.client
      ​
      # 创建连接(相当于浏览器)
      connect = http.client.HTTPConnection('www.baidu.com')
      ​
      # 发送请求(GETPOST)
      connect.request(method='GET', url='http://www.baidu.com')
      ​
      # 获取响应
      resp = connect.getresponse()
      ​
      # 打印响应内容,读取并解码
      print(resp.read().decode('gbk'))

    邮件发送

    • 说明:在一个网站中经常使用邮件操作,如:激活、通知、等

    • smtp使用

      
      
      import smtplib
      # 将字符串转换为邮件的文本格式
      from email.mime.text import MIMEText
      ​
      # 邮箱服务器
      mail_server = 'smtp.1000phone.com'# 用户名
      mail_user = 'lijie@1000phone.com'# 密码或授权码,为了不将密码公开,可以通过环境变量的方式获取
      import os
      mail_password = os.environ.get('MAIL_PASSWORD') or '123456'# 邮件消息
      message = '你好,欢迎注册xxx平台,激活请点击右边链接 <a href="http://www.baidu.com">点击激活</a>'
      # 将邮件字符串消息转换邮件格式,若内容是HTML需要指定第二个参数为'html'
      message = MIMEText(message, 'html')
      ​
      # 设置主题
      message['Subject'] = '账户激活'
      # 设置发送人
      message['From'] = mail_user
      ​
      # 创建邮件对象
      mail = smtplib.SMTP(mail_server, 25)
      # 登录服务器
      mail.login(mail_user, mail_password)

    接受者,多个使用逗号隔开

    to = '956673351@qq.com'

    发送邮件

    mail.sendmail(mail_user, to, message.as_string())

    结束

    mail.quit()



    ### 短信发送

    - 说明:注册验证码、通知消息、营销短信、...

    - 平台:阿里、云之讯、秒嘀、...

    - 示例:秒嘀(miaodiyun.com)

    ```python
    # 请求地址
      url = 'https://api.miaodiyun.com/20150822/industrySMS/sendSMS'# 请求头
      headers = {'Content-type': 'application/x-www-form-urlencoded'}
    ​
      # 账户sid
      accountSid = '1e3808d2bf77467ba838001351c05a07'# auth token
      auth_token = 'a6181ae71b78455b8b4ca6d5c6bd793a'# 时间戳
      import time
      timestamp = time.strftime('%Y%m%d%H%M%S')
    ​
      sig = accountSid + auth_token + timestamp
      # md5加密一下
      import hashlib
      md = hashlib.md5()
      md.update(sig.encode('utf-8'))
    ​
      sig = md.hexdigest()
    ​
      # 模板参数
      yzm = '632881'
      t = '5'
      param = yzm + ',' + t
    ​
      # 表单数据
      form_data = {
          'accountSid': accountSid,
          'templateid': '192310431',
          'to': '13017629070',
          'timestamp': timestamp,
          'sig': sig,
          'param': param,
      }
    ​
      # 将字典转换为url参数形式
      from urllib.parse import urlencode
      form_data = urlencode(form_data)
    ​
      # 创建浏览器对象
      import http.client
      connect = http.client.HTTPConnection('api.miaodiyun.com')
    ​
      # 发送POST请求
      connect.request(method='POST', url=url, body=form_data, headers=headers)
    ​
      # 获取响应
      resp = connect.getresponse()
    ​
      # 打印响应结果
      print(resp.read().decode('utf-8'))

    练习:

    • 实现邮件发送函数的封装

    • 找到一个其他平台,试着发送短信

    • 封装一个函数,专门用于短信发送,传递相关参数,返回验证码

  • 相关阅读:
    题解-CF468E Permanent
    CSP2021 游记
    二项式系数相关
    欧拉反演
    欧拉函数
    [快速幂]1
    GMT绘制地形起伏
    华为mate8双击唤醒屏幕
    回家乡了
    CSP-S2021
  • 原文地址:https://www.cnblogs.com/kiki5881/p/8560599.html
Copyright © 2011-2022 走看看