• 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

     







  • 相关阅读:
    数据结构.队列
    数据结构.栈
    数据结构.线性表(2)——链式表
    新标日初级:12(小李比森年轻)
    数据结构.线性表(1)——顺序表
    新标日初级:11(小野喜欢歌曲)
    新标日初级:10(京都的红叶很有名)
    crawlSpider
    爬虫如何将数据保存到mongodb数据库中
    爬虫如何将数据保存到mysql数据库
  • 原文地址:https://www.cnblogs.com/xussi/p/9062112.html
Copyright © 2020-2023  润新知