zoukankan      html  css  js  c++  java
  • DAY5-Python学习笔记

    1.电子邮件:

    邮件历程:

    发件人 -> MUA -> MTA -> MTA -> 若干个MTA -> MDA <- MUA <- 收件人

    编写MUA把邮件到MTA:

    MUA和MTA使用的协议就是SMTP:Simple Mail Transfer Protocol。
    在发邮件时,先配置SMTP服务器(发到哪个MTA上),例如163提供的SMTP服务器地址:
    smtp.163.com。,SMTP服务器还要求你填写邮箱地址和邮箱密码

    编写MUA从MDA上邮件:
    MUA和MDA使用的协议有两种:POP:Post Office Protocol(俗称POP3) IMAP:Internet Message Access Protocol

       MDA收邮件时,MDA服务器也要求验证你的邮箱密码

    SMTP发送邮件:SMTP发邮件协议

    email模块:负责构造邮件

    from email.mime.text import MIMEText
    
    # #第一个参数邮件正文,第二个参数MIME的subtype('plain'表示纯文本),utf-8编码保证多语言兼容性
    msg = MIMEText('hello, send by Python...', 'plain', 'utf-8')
    
    # 输入Email地址和口令:
    from_addr = input('From: ')
    password = input('Password: ')
    # 输入收件人地址:
    to_addr = input('To: ')
    # 输入SMTP服务器地址:
    smtp_server = input('SMTP server: ')
    
    import smtplib
    server = smtplib.SMTP(smtp_server, 25) # SMTP协议默认端口是25
    server.set_debuglevel(1) #打印出和SMTP服务器交互的所有信息
    server.login(from_addr, password) #登录SMTP服务器 
    server.sendmail(from_addr, [to_addr], msg.as_string()) #发邮件,发给多个人传入一个list,正文是一个str,as_string()把MIMEText对象变成str
    
    server.quit()

    完整邮件:

    from email import encoders
    from email.header import Header
    from email.mime.text import MIMEText
    from email.utils import parseaddr, formataddr
    
    import smtplib
    
    def _format_addr(s):  #_format_addr()来格式化一个邮件地址
        name, addr = parseaddr(s)
        return formataddr((Header(name, 'utf-8').encode(), addr))
    
    from_addr = input('From: ')
    password = input('Password: ')
    to_addr = input('To: ')
    smtp_server = input('SMTP server: ')
    
    msg = MIMEText('hello, send by Python...', 'plain', 'utf-8')
    msg['From'] = _format_addr('Python爱好者 <%s>' % from_addr)
    msg['To'] = _format_addr('管理员 <%s>' % to_addr)  #msg['To']接收的是字符串而不是list,如果有多个邮件地址,用,分隔即可
    msg['Subject'] = Header('来自SMTP的问候……', 'utf-8').encode()
    
    server = smtplib.SMTP(smtp_server, 25)
    server.set_debuglevel(1)
    server.login(from_addr, password)
    server.sendmail(from_addr, [to_addr], msg.as_string())
    server.quit()

    更多内容

    smtplib模块:负责发送邮件

    读取邮件:

    import poplib
    
    # 输入邮件地址, 口令和POP3服务器地址:
    email = input('Email: ')
    password = input('Password: ')
    pop3_server = input('POP3 server: ')
    
    # 连接到POP3服务器:
    server = poplib.POP3(pop3_server)
    # 可以打开或关闭调试信息:
    server.set_debuglevel(1)
    # 可选:打印POP3服务器的欢迎文字:
    print(server.getwelcome().decode('utf-8'))
    
    # 身份认证:
    server.user(email)
    server.pass_(password)
    
    # stat()返回邮件数量和占用空间:
    print('Messages: %s. Size: %s' % server.stat())
    # list()返回所有邮件的编号:
    resp, mails, octets = server.list()
    # 可以查看返回的列表类似[b'1 82923', b'2 2184', ...]
    print(mails)
    
    # 获取最新一封邮件, 注意索引号从1开始:
    index = len(mails)
    resp, lines, octets = server.retr(index)
    
    # lines存储了邮件的原始文本的每一行,
    # 可以获得整个邮件的原始文本:
    msg_content = b'
    '.join(lines).decode('utf-8')
    # 稍后解析出邮件:
    msg = Parser().parsestr(msg_content)
    
    # 可以根据邮件索引号直接从服务器删除邮件:
    # server.dele(index)
    # 关闭连接:
    server.quit()

    更多内容


    2.HTTP协议:浏览器和服务器之间的传输协议
    GET / HTTP/1.1
    打开一个网页GET请求,/表示URL的路径,HTTP/1.1指示采用的HTTP协议版本是1.1
    域名:
    Host: www.sina.com.cn 

    200表示一个成功的响应,后面的OK是说明。失败的响应有404 Not Found:网页不存在,500 Internal Server Error:服务器内部出错:
    HTTP/1.1 200 OK

    Content-Type指示响应的内容,这里是text/html表示HTML网页:

    Content-Type: text/html

    HTTP请求:

    方法GET:仅请求资源

    方法POST:请求资源还附带用户数据

    路径:/full/url/path

    域名:由Host头指定:Host: www.sina.com.cn

     







  • 相关阅读:
    多测师讲解html _伪类选择器17_高级讲师肖sir
    多测师讲解html _后代选择器16_高级讲师肖sir
    多测师讲解html _组合选择器_高级讲师肖sir
    多测师讲解html _标签选择器14_高级讲师肖sir
    前端 HTML form表单标签 input标签 type属性 重置按钮 reset
    前端 HTML form表单标签 textarea标签 多行文本
    前端 HTML form表单标签 input标签 type属性 file 上传文件
    前端 HTML form表单标签 input标签 type属性 radio 单选框
    前端 HTML form表单标签 input标签 type属性 checkbox 多选框
    前端 HTML form表单目录
  • 原文地址:https://www.cnblogs.com/xussi/p/9062112.html
Copyright © 2011-2022 走看看