加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Python基础—14-邮件与短信

发布时间:2020-12-17 00:23:13 所属栏目:Python 来源:网络整理
导读:h1 id="邮件与短信" data-source-line="1"邮件与短信 h3 id="邮件发送" data-source-line="3"邮件发送 ul data-source-line="5" 简介: 邮件服务器、账户、密码 相关协议:SMTP、POP3、IMAP 默认TCP协议端口:25 用途:经常用在一个网站的注册激活、通知、找

<h1 id="邮件与短信" data-source-line="1">邮件与短信
<h3 id="邮件发送" data-source-line="3">邮件发送
<ul data-source-line="5">

  • 简介:

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

  • 库:smtplib

  • 示例:

    email.mime.text <span style="color: #008000">#<span style="color: #008000"> 邮箱服务器
    mail_server = <span style="color: #800000">'
    <span style="color: #800000">smtp.163.com
    <span style="color: #800000">'

    <span style="color: #008000">#<span style="color: #008000"> 用户名
    mail_user = <span style="color: #800000">'<span style="color: #800000">xxx@163.com<span style="color: #800000">'

    <span style="color: #008000">#<span style="color: #008000"> 密码或授权码<span style="color: #008000">

    <span style="color: #008000"> 为了密码不对外公开,可以通过环境变量进行获取

    mail_pwd = os.getenv(<span style="color: #800000">'<span style="color: #800000">MAIL_PASSWORD<span style="color: #800000">',<span style="color: #800000">'<span style="color: #800000">123456<span style="color: #800000">'<span style="color: #000000">)

    <span style="color: #008000">#<span style="color: #008000"> 消息内容
    content = <span style="color: #800000">'<span style="color: #800000">请点击右边链接完成激活,激活<span style="color: #800000">'

    <span style="color: #008000">#<span style="color: #008000"> 创建消息对象,并设置内容,<span style="color: #008000">

    <span style="color: #008000"> 第二个用于指定文本内容类型,若不指定默认是文本

    message = MIMEText(content,<span style="color: #800000">'<span style="color: #800000">html<span style="color: #800000">'<span style="color: #000000">)

    <span style="color: #008000">#<span style="color: #008000"> 设置主题
    message[<span style="color: #800000">'<span style="color: #800000">Subject<span style="color: #800000">'] = <span style="color: #800000">'<span style="color: #800000">账户激活<span style="color: #800000">'

    <span style="color: #008000">#<span style="color: #008000"> 设置发送者
    message[<span style="color: #800000">'<span style="color: #800000">From<span style="color: #800000">'] =<span style="color: #000000"> mail_user

    <span style="color: #008000">#<span style="color: #008000"> 创建邮件发送类
    mail = smtplib.SMTP(mail_server,25<span style="color: #000000">)

    <span style="color: #008000">#<span style="color: #008000"> 身份认证
    <span style="color: #000000">mail.login(mail_user,mail_pwd)

    <span style="color: #008000">#<span style="color: #008000"> 指定接收者,多个接收者使用列表
    to = <span style="color: #800000">'<span style="color: #800000">xxx@qq.com<span style="color: #800000">'

    <span style="color: #008000">#<span style="color: #008000"> 发送邮件
    <span style="color: #000000">mail.sendmail(mail_user,to,message.as_string())

    <span style="color: #008000">#<span style="color: #008000"> 结束
    mail.quit()

    • 总结:

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

      http.client

      <span style="color: #008000">#<span style="color: #008000"> 创建连接(相当于浏览器)
      connect = http.client.HTTPConnection(<span style="color: #800000">'<span style="color: #800000">www.baidu.com<span style="color: #800000">'<span style="color: #000000">)

      <span style="color: #008000">#<span style="color: #008000"> 发出请求
      connect.request(method=<span style="color: #800000">'<span style="color: #800000">GET<span style="color: #800000">',url=<span style="color: #800000">'<span style="color: #800000">http://www.baidu.com<span style="color: #800000">'<span style="color: #000000">)

      <span style="color: #008000">#<span style="color: #008000"> 获取响应
      resp =<span style="color: #000000"> connect.getresponse()

      <span style="color: #008000">#<span style="color: #008000"> 打印
      <span style="color: #0000ff">print(resp.read().decode(<span style="color: #800000">'<span style="color: #800000">utf-8<span style="color: #800000">'))

    • json与xml

      • 说明:是使用非常广泛的两种数据传输格式,之前xml居多,现在json居多。
      • json使用
      d = {<span style="color: #800000">'<span style="color: #800000">name<span style="color: #800000">': <span style="color: #800000">'<span style="color: #800000">xiaoming<span style="color: #800000">',<span style="color: #800000">'<span style="color: #800000">age<span style="color: #800000">': <span style="color: #800000">'<span style="color: #800000">20<span style="color: #800000">'<span style="color: #000000">}
      <span style="color: #008000">#<span style="color: #008000"> 将字典对象转换为JSON格式的字符串
      s =<span style="color: #000000"> json.dumps(d)
      <span style="color: #0000ff">print<span style="color: #000000">(s)
      <span style="color: #0000ff">print<span style="color: #000000">(type(s))

      <span style="color: #008000">#<span style="color: #008000"> 将JSON格式的字符串转换为字典对象
      d2 =<span style="color: #000000"> json.loads(s)
      <span style="color: #0000ff">print<span style="color: #000000">(d2)
      <span style="color: #0000ff">print(type(d2))

    • urllib.parse

      urllib.parse d = {<span style="color: #800000">'<span style="color: #800000">name<span style="color: #800000">': <span style="color: #800000">'<span style="color: #800000">xiaoming<span style="color: #800000">',<span style="color: #800000">'<span style="color: #800000">age<span style="color: #800000">': <span style="color: #800000">'<span style="color: #800000">20<span style="color: #800000">'<span style="color: #000000">}

      <span style="color: #008000">#<span style="color: #008000"> 将字典数据进行url编码:name=xiaoming&age=20
      <span style="color: #0000ff">print<span style="color: #000000">(urlencode(d))

      url = <span style="color: #800000">'<span style="color: #800000">http://www.baidu.com/abc/def?page=2&amp;id=5&amp;like=sport&amp;like=music<span style="color: #800000">'

      <span style="color: #008000">#<span style="color: #008000"> 解析url
      p =<span style="color: #000000"> urlparse(url)
      <span style="color: #0000ff">print<span style="color: #000000">(p.query)

      <span style="color: #008000">#<span style="color: #008000"> 将url请求字符串转换为字典
      d2 =<span style="color: #000000"> parse_qs(p.query)
      <span style="color: #0000ff">print(d2)

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

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

    • 认识:云之讯()

    • 代码示例:

      account_sid =

      <span style="color: #008000">#<span style="color: #008000"> auth token
      auth_token = <span style="color: #800000">'<span style="color: #800000">2426bff7df8ff95f59fcbcdce3362c58<span style="color: #800000">'

      <span style="color: #008000">#<span style="color: #008000"> 应用标识
      app_id = <span style="color: #800000">'<span style="color: #800000">fac78e7f7f0647c7a47c4809ff564f5c<span style="color: #800000">'

      <span style="color: #008000">#<span style="color: #008000"> 短信模板标识
      template_id = <span style="color: #800000">'<span style="color: #800000">291768<span style="color: #800000">'

      <span style="color: #008000">#<span style="color: #008000"> 模板参数,多个使用逗号隔开
      param = <span style="color: #800000">'<span style="color: #800000">name<span style="color: #800000">'

      <span style="color: #008000">#<span style="color: #008000"> 电话
      mobile = <span style="color: #800000">'<span style="color: #800000">xxx<span style="color: #800000">'

      <span style="color: #008000">#<span style="color: #008000"> 数据字典
      form_data =<span style="color: #000000"> {
      <span style="color: #800000">"<span style="color: #800000">sid<span style="color: #800000">"<span style="color: #000000">: account_sid,<span style="color: #800000">"<span style="color: #800000">token<span style="color: #800000">"<span style="color: #000000">: auth_token,<span style="color: #800000">"<span style="color: #800000">appid<span style="color: #800000">"<span style="color: #000000">: app_id,<span style="color: #800000">"<span style="color: #800000">templateid<span style="color: #800000">"<span style="color: #000000">: template_id,<span style="color: #800000">"<span style="color: #800000">param<span style="color: #800000">"<span style="color: #000000">: param,<span style="color: #800000">"<span style="color: #800000">mobile<span style="color: #800000">"<span style="color: #000000">: mobile
      }

      <span style="color: #008000">#<span style="color: #008000"> 将字典转换JSON字符串
      <span style="color: #0000ff">import<span style="color: #000000"> json
      form_data =<span style="color: #000000"> json.dumps(form_data)

      <span style="color: #008000">#<span style="color: #008000"> 创建'浏览器'对象
      <span style="color: #0000ff">import<span style="color: #000000"> http.client
      connect = http.client.HTTPConnection(<span style="color: #800000">'<span style="color: #800000">open.ucpaas.com<span style="color: #800000">'<span style="color: #000000">)

      <span style="color: #008000">#<span style="color: #008000"> 准备请求头
      headers =<span style="color: #000000"> {
      <span style="color: #800000">'<span style="color: #800000">Accept<span style="color: #800000">': <span style="color: #800000">'<span style="color: #800000">application/json<span style="color: #800000">'<span style="color: #000000">,<span style="color: #800000">'<span style="color: #800000">Content-Type<span style="color: #800000">': <span style="color: #800000">'<span style="color: #800000">application/json;charset=utf-8<span style="color: #800000">'<span style="color: #000000">
      }
      <span style="color: #008000">#<span style="color: #008000"> 请求地址
      url = <span style="color: #800000">'<span style="color: #800000">https://open.ucpaas.com/ol/sms/sendsms<span style="color: #800000">'

      <span style="color: #008000">#<span style="color: #008000"> 发送请求
      connect.request(method=<span style="color: #800000">'<span style="color: #800000">POST<span style="color: #800000">',url=url,body=form_data,headers=<span style="color: #000000">headers)

      <span style="color: #008000">#<span style="color: #008000"> 获取响应
      resp =<span style="color: #000000"> connect.getresponse()

      <span style="color: #008000">#<span style="color: #008000"> 打印响应
      <span style="color: #0000ff">print(resp.read().decode(<span style="color: #800000">'<span style="color: #800000">utf-8<span style="color: #800000">'))

    • 友情提示:出现错误,去查看返回状态码,并进行解决。

    • 秒嘀平台简介

    (编辑:李大同)

    【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

      推荐文章
        热点阅读