kiki5881

短信邮件

 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\')
    ​
    # 发送请求(GET\POST)
    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\'))

 

练习:

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

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

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

分类:

技术点:

相关文章: