zoukankan      html  css  js  c++  java
  • Python基础—14-邮件与短信

    邮件与短信

    邮件发送

    • 简介:

      • 邮件服务器、账户、密码
      • 相关协议:SMTP、POP3、IMAP
      • 默认TCP协议端口:25
    • 用途:经常用在一个网站的注册激活、通知、找回密码等场景

    • 库:smtplib

    • 示例:

      import os
      import smtplib
      # 用于邮件发送的类
      from email.mime.text import MIMEText
      
      # 邮箱服务器
      mail_server = 'smtp.163.com'
      
      # 用户名
      mail_user = 'xxx@163.com'
      
      # 密码或授权码
      # 为了密码不对外公开,可以通过环境变量进行获取
      mail_pwd = os.getenv('MAIL_PASSWORD', '123456')
      
      # 消息内容
      content = '请点击右边链接完成激活,激活'
      
      # 创建消息对象,并设置内容,
      # 第二个用于指定文本内容类型,若不指定默认是文本
      message = MIMEText(content, 'html')
      
      # 设置主题
      message['Subject'] = '账户激活'
      
      # 设置发送者
      message['From'] = mail_user
      
      # 创建邮件发送类
      mail = smtplib.SMTP(mail_server, 25)
      
      # 身份认证
      mail.login(mail_user, mail_pwd)
      
      # 指定接收者,多个接收者使用列表
      to = 'xxx@qq.com'
      
      # 发送邮件
      mail.sendmail(mail_user, to, message.as_string())
      
      # 结束
      mail.quit()
    • 总结:

      • 邮箱服务器配置
      • 创建用于发送的消息对象MIMEText
      • 创建用于发送邮件的对象smtplib.SMTP
      • 使用邮件发送对象发送消息对象

    预备知识

    • 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

      • 说明:是使用非常广泛的两种数据传输格式,之前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 = 'http://www.baidu.com/abc/def?page=2&id=5&like=sport&like=music'
      
      # 解析url
      p = urlparse(url)
      print(p.query)
      
      # 将url请求字符串转换为字典
      d2 = parse_qs(p.query)
      print(d2)

    短信发送

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

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

    • 认识:云之讯(www.ucpaas.com)

    • 代码示例:

      # 账户sid
      account_sid = 'b5c6fd1d02071a766009475f0478e0ac'
      
      # auth token
      auth_token = '2426bff7df8ff95f59fcbcdce3362c58'
      
      # 应用标识
      app_id = 'fac78e7f7f0647c7a47c4809ff564f5c'
      
      # 短信模板标识
      template_id = '291768'
      
      # 模板参数,多个使用逗号隔开
      param = 'name'
      
      # 电话
      mobile = 'xxx'
      
      # 数据字典
      form_data = {
          "sid": account_sid,
          "token": auth_token,
          "appid": app_id,
          "templateid": template_id,
          "param": param,
          "mobile": mobile
      }
      
      # 将字典转换JSON字符串
      import json
      form_data = json.dumps(form_data)
      
      # 创建'浏览器'对象
      import http.client
      connect = http.client.HTTPConnection('open.ucpaas.com')
      
      # 准备请求头
      headers = {
          'Accept': 'application/json',
          'Content-Type': 'application/json;charset=utf-8'
      }
      # 请求地址
      url = 'https://open.ucpaas.com/ol/sms/sendsms'
      
      # 发送请求
      connect.request(method='POST', url=url, body=form_data, headers=headers)
      
      # 获取响应
      resp = connect.getresponse()
      
      # 打印响应
      print(resp.read().decode('utf-8'))
    • 友情提示:出现错误,去查看返回状态码,并进行解决。

    • 秒嘀平台简介

  • 相关阅读:
    【转载】不出国如何练就一口流利的英语?
    【转载】什么能力很重要——4
    【转载】什么能力很重要,但大多数人却没有?——3
    【转载】什么能力很重要,但大多数人却没有?——2
    【转载】什么能力很重要,但大多数人却没有?——1
    【转载】有哪些东西是你读研究生以后才懂的?
    JDBCTemplate基本使用
    Druid数据库连接池基本使用
    C3P0连接池
    简单理解数据库连接池(JDBC)
  • 原文地址:https://www.cnblogs.com/swjblog/p/9677782.html
Copyright © 2011-2022 走看看