lzw19951020
邮件发送

- 简介:
  - 邮件服务器、用户名、密码
  - 相关协议:
    - SMTP:简单邮件传输协议
    - POP3:邮局通讯协议
    - IMAP:交互式邮件存取协议
  - SMTP协议默认端口是25
- 用途:网站注册激活、通知、找回密码等。
- 库:smtplib
- 示例:
      import os
      import smtplib
      from email.mime.text import MIMEText
      
      # 邮箱服务器
      mail_server = \'smtp.1000phone.com\'
      
      # 用户名
      mail_user = \'lijie@1000phone.com\'
      
      # 密码 或 授权码(QQ邮箱)
      # 为了不对外公开隐私信息,我们可以通过环境变量获取
      mail_pwd = os.getenv(\'MAIL_PASSWORD\', \'123456\')
      
      # 发送的邮件消息
      content = \'请点击下面链接完成激活<a href="http://www.baidu.com">激活</a>\'
      
      # 创建用于发送的邮件消息对象
      # 若发送的消息是HTML,需要指定第二个参数进行说明
      message = MIMEText(content, \'html\')
      
      # 设置主题
      message[\'Subject\'] = \'账户激活\'
      
      # 设置发送者
      message[\'From\'] = mail_user
      
      # 创建一个用于发送邮件的对象,加密传输使用这个类:smtplib.SMTP_SSL(\'smtp.qq.com\', 465)
      mail = smtplib.SMTP(mail_server, 25)
      
      # 身份认证
      mail.login(mail_user, mail_pwd)
      
      # 接收地址,单个传递字符串,多个传列表
      to = \'488868561@qq.com\'
      
      # 发送邮件    
      mail.sendmail(mail_user, to, message.as_string())
      
      # 结束
      mail.quit()

- 总结:
  - 邮箱服务器配置
  - 创建用于发送的消息对象MIMEText
  - 创建用于发送邮件的对象smtplib.SMTP/smtplib.SMTP_SSL
  - 使用邮件发送对象发送邮件消息对象

预备知识

- http.client:相当于浏览器向服务器发送请求
        import http.client
      
        # 创建对象(相当于一个浏览器)
        connect = http.client.HTTPConnection(\'www.baidu.com\')
      
        # 发送请求
        connect.request(method=\'GET\', url=\'http://www.baidu.com\')
      
        # 获取响应
        resp = connect.getresponse()
      
        # 打印响应
        print(resp.read().decode(\'utf-8\'))

- json与xml
  - 说明:使用非常广泛的数据传输格式,现在使用较多的时json。
  - JSON使用:
      import json
      
      d = {\'name\': \'xiaoming\', \'age\': 20}
      # 将字典对象转换为JSON字符串
      s = json.dumps(d)
      print(s)
      print(type(s))
      
      # 将JSON字符串转换为字典对象
      d2 = json.loads(s)
      print(d2)
      print(type(d2))
- urllib.parse
      from urllib.parse import urlencode, urlparse, parse_qs
      
      d = {\'name\':\'xiaoming\', \'age\': 20}
      # 将字典数据进行URL编码:name=xiaoming&age=20
      print(urlencode(d))
      
      url = \'https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=0&rsv_idx=1&tn=baidu&wd=python&rsv_pq=ac798cd20001b3c5&rsv_t=8b4eWBso%2FMiB2fKr%2FHbj8K8ajXQF9Zrm%2F72a811WkQgVAAliA%2BP66as7QHQ&rqlang=cn&rsv_enter=1&rsv_sug3=7&rsv_sug1=5&rsv_sug7=101&rsv_sug2=0&inputT=2797&rsv_sug4=3093&rsv_sug=1\'
      
      # 解析url
      p = urlparse(url)
      # print(p.query)
      
      # 解析参数:将请求字符串转换为字典
      d2 = parse_qs(p.query)
      print(d2)

短信发送

- 说明:注册验证码、通知消息、营销短信等
- 平台:阿里、秒嘀、云之讯、...
- 认识:云之讯(www.ucpaas.com)
- 实例:
      # 账户id
      sid = \'c1d54bae74e733d2b7e39f19ff006244\'
      
      # 账户token
      token = \'2426bff7df8ff95f59fcbcdce3362c58\'
      
      # 应用标识
      appid = \'fac78e7f7f0647c7a47c4809ff564f5c\'
      
      # 模板id
      templateid = \'291768\'
      
      # 模板参数,多个使用英文逗号隔开
      param = \'dahua\'
      
      # 手机号
      mobile = \'17596129603\'
      
      # 参数字典
      form_data = {
          \'sid\': sid,
          \'token\': token,
          \'appid\': appid,
          \'templateid\': templateid,
          \'param\': param,
          \'mobile\': mobile
      }
      # 将字典转换为JSON字符串
      import json
      form_data = json.dumps(form_data)
      # print(form_data)
      
      # 创建\'浏览器\'对象
      import http.client
      
      connect = http.client.HTTPConnection(\'open.ucpaas.com\')
      
      # 请求地址
      url = \'https://open.ucpaas.com/ol/sms/sendsms\'
      
      # 请求头
      headers = {
          \'Accept\': \'application/json\',
          \'Content-Type\': \'application/json;charset=utf-8\'
      }
      
      # 发送请求
      connect.request(method=\'POST\', url=url, body=form_data, headers=headers)
      
      # 获取响应
      resp = connect.getresponse()
      
      # 打印结果
      print(resp.read().decode(\'utf-8\'))
  

 

分类:

技术点:

相关文章: