1.电子邮件:

邮件历程:

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

    编写MUA把邮件发到MTA

    MUAMTA使用的协议就是SMTPSimple Mail Transfer Protocol
    在发邮件时,先配置SMTP服务器(发到哪个MTA上),例如163提供的SMTP服务器地址:smtp.163.com。,SMTP服务器还要求你填写邮箱地址和邮箱密码
    编写MUAMDA上收邮件:
    MUAMDA使用的协议有两种:POPPost Office Protocol(俗称POP3 IMAPInternet Message Access Protocol

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

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

email模块:负责构造邮件

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

完整邮件:

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

更多内容

smtplib模块:负责发送邮件

读取邮件:

  1. import poplib
  2.  
  3. # 输入邮件地址, 口令和POP3服务器地址:
  4. email = input('Email: ')
  5. password = input('Password: ')
  6. pop3_server = input('POP3 server: ')
  7.  
  8. # 连接到POP3服务器:
  9. server = poplib.POP3(pop3_server)
  10. # 可以打开或关闭调试信息:
  11. server.set_debuglevel(1)
  12. # 可选:打印POP3服务器的欢迎文字:
  13. print(server.getwelcome().decode('utf-8'))
  14.  
  15. # 身份认证:
  16. server.user(email)
  17. server.pass_(password)
  18.  
  19. # stat()返回邮件数量和占用空间:
  20. print('Messages: %s. Size: %s' % server.stat())
  21. # list()返回所有邮件的编号:
  22. resp, mails, octets = server.list()
  23. # 可以查看返回的列表类似[b'1 82923', b'2 2184', ...]
  24. print(mails)
  25.  
  26. # 获取最新一封邮件, 注意索引号从1开始:
  27. index = len(mails)
  28. resp, lines, octets = server.retr(index)
  29.  
  30. # lines存储了邮件的原始文本的每一行,
  31. # 可以获得整个邮件的原始文本:
  32. msg_content = b'\r\n'.join(lines).decode('utf-8')
  33. # 稍后解析出邮件:
  34. msg = Parser().parsestr(msg_content)
  35.  
  36. # 可以根据邮件索引号直接从服务器删除邮件:
  37. # server.dele(index)
  38. # 关闭连接:
  39. server.quit()

更多内容


  1. 2.HTTP协议:浏览器和服务器之间的传输协议
  1. GET / HTTP/1.1
  1. 打开一个网页GET请求,/表示URL的路径,HTTP/1.1指示采用的HTTP协议版本是1.1
  1. 域名:
  1. Host: www.sina.com.cn
  1. 200表示一个成功的响应,后面的OK是说明。失败的响应有404 Not Found:网页不存在,500 Internal Server Error:服务器内部出错:
  1. HTTP/1.1 200 OK

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

  1. Content-Type: text/html

HTTP请求:

方法GET:仅请求资源

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

路径:/full/url/path

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

  1.  

DAY5-Python学习笔记的更多相关文章

  1. 第五周 day5 python学习笔记

    1.软件开发的常规目录结构 更加详细信息参考博客:http://www.cnblogs.com/alex3714/articles/5765046.html         2.python中的模块 ...

  2. Python学习笔记,day5

    Python学习笔记,day5 一.time & datetime模块 import本质为将要导入的模块,先解释一遍 #_*_coding:utf-8_*_ __author__ = 'Ale ...

  3. 【目录】Python学习笔记

    目录:Python学习笔记 目标:坚持每天学习,每周一篇博文 1. Python学习笔记 - day1 - 概述及安装 2.Python学习笔记 - day2 - PyCharm的基本使用 3.Pyt ...

  4. python学习笔记整理——字典

    python学习笔记整理 数据结构--字典 无序的 {键:值} 对集合 用于查询的方法 len(d) Return the number of items in the dictionary d. 返 ...

  5. VS2013中Python学习笔记[Django Web的第一个网页]

    前言 前面我简单介绍了Python的Hello World.看到有人问我搞搞Python的Web,一时兴起,就来试试看. 第一篇 VS2013中Python学习笔记[环境搭建] 简单介绍Python环 ...

  6. python学习笔记之module && package

    个人总结: import module,module就是文件名,导入那个python文件 import package,package就是一个文件夹,导入的文件夹下有一个__init__.py的文件, ...

  7. python学习笔记(六)文件夹遍历,异常处理

    python学习笔记(六) 文件夹遍历 1.递归遍历 import os allfile = [] def dirList(path): filelist = os.listdir(path) for ...

  8. python学习笔记--Django入门四 管理站点--二

    接上一节  python学习笔记--Django入门四 管理站点 设置字段可选 编辑Book模块在email字段上加上blank=True,指定email字段为可选,代码如下: class Autho ...

  9. python学习笔记--Django入门0 安装dangjo

    经过这几天的折腾,经历了Django的各种报错,翻译的内容虽然不错,但是与实际的版本有差别,会出现各种奇葩的错误.现在终于找到了解决方法:查看英文原版内容:http://djangobook.com/ ...

  10. python学习笔记(一)元组,序列,字典

    python学习笔记(一)元组,序列,字典

随机推荐

  1. myeclipse激活后server不能用问题

    一般是由于激活失败造成的,这种问题就卸了重新安装吧,目前还没有找到合理的方法解决,这个还真的看哥们的运气了,我是装了不下5遍才激活成功的,一般情况下,在激活的时候 出现下图的情况,Usercode写好 ...

  2. python魔法方法大全

    1.python魔法方法详解: python魔法方法是可以修改重载的,如果你的对象实现(重载)了这些方法中的某一个,那么这个方法就会在特殊的情况下被 Python 所调用,你可以定义自己想要的行为,而 ...

  3. 004 --Mysql中的锁的问题

    死锁 死锁是指两个或多个事务在同一个资源上相互占用, 并请求锁定对方占用的资源, 从而导致恶性循环的现象. 当多个事务试图以不同顺序锁定资源时, 就可能产生死锁.死锁发生以后, 只有部分或者完全回滚其 ...

  4. Python机器学习库SKLearn:数据集转换之管道和特征

    转载自:https://blog.csdn.net/cheng9981/article/details/61918129 4.1 管道和特征:组合估计量 4.1.1 管道:链接估计 管道可以用于将多个 ...

  5. dvwa——命令注入&文件包含

    命令注入 commond_injection 源码.分析.payload: low: <?php if( isset( $_POST[ 'Submit' ] ) ) { // Get input ...

  6. Hadoop错误码速查

    经常遇到的exception是:PipeMapRed.waitOutputThreads(): subprocess failed with code N "OS error code 1: ...

  7. “学霸系统”之NABC

    我们团队这次选择的是“学霸系统”客户端项目: 1.需求(need) 作为一款和网上教学问答系统具有相似功能的手机客户端,具体的功能已给出要求:用户管理.搜索.分类.上传下载.用户贡献与交互等功能. ( ...

  8. 作业MathExam

    MathExam233 一.预估与实际 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 600 650 • ...

  9. YQCB冲刺周第七天

    站立会议 任务看板 燃尽图 今天的任务为实现个人设置中的修改密码.设置金额的功能.以及界面的美化. 遇到的问题为修改自己密码时获得当前用户的id问题.

  10. 用java构造一个带层次的文件目录遍历器

    import java.util.List; import java.io.File; import java.util.ArrayList; public class IteratorUtil { ...