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

 

练习:

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

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

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

posted @ 2018-03-13 19:14  pythonsonline  阅读(576)  评论(0编辑  收藏  举报