• 邮件与短信


    邮件与短信

    邮件发送

    • 简介:

      • 邮件服务器、用户名、密码

      • 相关协议:

        • SMTP:简单邮件传输协议

        • POP3:邮局通讯协议

        • IMAP:交互式邮件存取协议

      • SMTP协议默认端口是25

    • 用途:网站注册激活、通知、找回密码等。

    • 库:smtplib

    • 示例:

      import os
      import smtplib
      from email.mime.text import MIMEText
      ​
      # 邮箱服务器
      mail_server = 'smtp.qq.com'# 用户名
      mail_user = '542684416@qq.com'# 密码 或 授权码(QQ邮箱)
      # 为了不对外公开隐私信息,我们可以通过环境变量获取
      mail_pwd = os.getenv('MAIL_PASSWORD', '授权码')
      ​
      # 发送的邮件消息
      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 = ***@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'))

      邮箱

      # 导包:需要用到的包tkinter用于创建pythonGUI界面
      import tkinter
      import time
      from email.mime.text import MIMEText
      import smtplib
      from tkinter import messagebox
      class EmailSend:
          def __init__(self):
              # 创建窗口
              window=tkinter.Tk()
              #控制窗口设定宽高500x300像素
              window.geometry("500x400")
              #控制窗口显示大小不可缩放
              window.resizable(width=False,height=False)
              #设置title
              window.title("="*20+"发送邮件"+"="*10)
              #在窗口中添加  邮件主题 文本标签 label(标签)
              label_text1=tkinter.Label(window,text="邮件主题")
              #将文本标签塞入
              label_text1.pack()
              #创建文本框(绑定窗口,定义宽度)
              self.input_title=tkinter.Entry(window,width=50)
              #塞入窗口
              self.input_title.pack()
              #接下来继续新增标签
              lable_text2=tkinter.Label(window,text="邮件内容")
              lable_text2.pack()
              self.input_content=tkinter.Entry(window,width=50)
              self.input_content.pack()
              label_from=tkinter.Label(window,text="发件人账号")
              label_from.pack()
              self.input_from=tkinter.Entry(window,width=50)
              self.input_from.pack()
              label_pwd=tkinter.Label(window,text="发件人密码(授权码)")
              label_pwd.pack()
              self.input_pwd=tkinter.Entry(window,width=50)
              self.input_pwd.pack()
              lable_text3=tkinter.Label(window,text="收件人")
              lable_text3.pack()
              self.input_to=tkinter.Entry(window,width=50)
              self.input_to.pack()
              button=tkinter.Button(window,text="点击发送",command=self.send)
              #在绑定同时添加定位距离上面元素20,按钮y轴高度10,宽度20
              button.pack(side="top",pady=20,ipady=10,ipadx=20)
              timetxt=time.strftime('%Y-%m-%d-%H:%M')
              label_time=tkinter.Label(window,text="发送时间:【%s】"%timetxt)
              label_time.pack()
              # 运行并显示窗口
              window.mainloop()
          '''下面写发送邮件方法'''
          def send(self):
              email_server="smtp.qq.com"#服务器
              email_user=self.input_from.get()#账号
              email_pwd=self.input_pwd.get()#授权码
              #内容
              content=self.input_content.get()
              #将发送内容更改为邮件
              content=MIMEText(content)
              #发送人
              content["From"]=email_user
              #标题
              content["subject"]=self.input_title.get()
              #收件人
              to=self.input_to.get()
              #创建邮件对象
              email_main=smtplib.SMTP(email_server,25)
              #登录
              email_main.login(user=email_user,password=email_pwd)
              #发送邮件(发送人,收件人,内容.string()
              email_main.sendmail(email_user,to,content.as_string())
              #断开链接
              email_main.quit()
              #弹出框提示发送成功
              messagebox.showinfo("发送状态","发送成功")
      sendem=EmailSend()
       

    •  

  • 相关阅读:
    左旋转字符串
    mybitis实现增,删,改,查,模糊查询的两种方式:(1)
    使用MYSQL时遇到的问题解决方法
    mysql的使用命令(1)
    matlab_exercise(4)----第一题
    matlab_exercise(3)----海伦公式求三角形面积
    matlab_exercise(2)----输入一个三位数,依次输出其个位数字,十位数字,百位数字
    matlab_exercise(1)--交换值
    [xPlugins] jQuery Contextmenu右键菜单
    [网站安全] 十大抢手的网站压力测试工具
  • 原文地址:https://www.cnblogs.com/542684416-qq/p/9807182.html
Copyright © 2020-2023  润新知