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'\r\n'.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
DAY5-Python学习笔记的更多相关文章
- 第五周 day5 python学习笔记
1.软件开发的常规目录结构 更加详细信息参考博客:http://www.cnblogs.com/alex3714/articles/5765046.html 2.python中的模块 ...
- Python学习笔记,day5
Python学习笔记,day5 一.time & datetime模块 import本质为将要导入的模块,先解释一遍 #_*_coding:utf-8_*_ __author__ = 'Ale ...
- 【目录】Python学习笔记
目录:Python学习笔记 目标:坚持每天学习,每周一篇博文 1. Python学习笔记 - day1 - 概述及安装 2.Python学习笔记 - day2 - PyCharm的基本使用 3.Pyt ...
- python学习笔记整理——字典
python学习笔记整理 数据结构--字典 无序的 {键:值} 对集合 用于查询的方法 len(d) Return the number of items in the dictionary d. 返 ...
- VS2013中Python学习笔记[Django Web的第一个网页]
前言 前面我简单介绍了Python的Hello World.看到有人问我搞搞Python的Web,一时兴起,就来试试看. 第一篇 VS2013中Python学习笔记[环境搭建] 简单介绍Python环 ...
- python学习笔记之module && package
个人总结: import module,module就是文件名,导入那个python文件 import package,package就是一个文件夹,导入的文件夹下有一个__init__.py的文件, ...
- python学习笔记(六)文件夹遍历,异常处理
python学习笔记(六) 文件夹遍历 1.递归遍历 import os allfile = [] def dirList(path): filelist = os.listdir(path) for ...
- python学习笔记--Django入门四 管理站点--二
接上一节 python学习笔记--Django入门四 管理站点 设置字段可选 编辑Book模块在email字段上加上blank=True,指定email字段为可选,代码如下: class Autho ...
- python学习笔记--Django入门0 安装dangjo
经过这几天的折腾,经历了Django的各种报错,翻译的内容虽然不错,但是与实际的版本有差别,会出现各种奇葩的错误.现在终于找到了解决方法:查看英文原版内容:http://djangobook.com/ ...
- python学习笔记(一)元组,序列,字典
python学习笔记(一)元组,序列,字典
随机推荐
- myeclipse激活后server不能用问题
一般是由于激活失败造成的,这种问题就卸了重新安装吧,目前还没有找到合理的方法解决,这个还真的看哥们的运气了,我是装了不下5遍才激活成功的,一般情况下,在激活的时候 出现下图的情况,Usercode写好 ...
- python魔法方法大全
1.python魔法方法详解: python魔法方法是可以修改重载的,如果你的对象实现(重载)了这些方法中的某一个,那么这个方法就会在特殊的情况下被 Python 所调用,你可以定义自己想要的行为,而 ...
- 004 --Mysql中的锁的问题
死锁 死锁是指两个或多个事务在同一个资源上相互占用, 并请求锁定对方占用的资源, 从而导致恶性循环的现象. 当多个事务试图以不同顺序锁定资源时, 就可能产生死锁.死锁发生以后, 只有部分或者完全回滚其 ...
- Python机器学习库SKLearn:数据集转换之管道和特征
转载自:https://blog.csdn.net/cheng9981/article/details/61918129 4.1 管道和特征:组合估计量 4.1.1 管道:链接估计 管道可以用于将多个 ...
- dvwa——命令注入&文件包含
命令注入 commond_injection 源码.分析.payload: low: <?php if( isset( $_POST[ 'Submit' ] ) ) { // Get input ...
- Hadoop错误码速查
经常遇到的exception是:PipeMapRed.waitOutputThreads(): subprocess failed with code N "OS error code 1: ...
- “学霸系统”之NABC
我们团队这次选择的是“学霸系统”客户端项目: 1.需求(need) 作为一款和网上教学问答系统具有相似功能的手机客户端,具体的功能已给出要求:用户管理.搜索.分类.上传下载.用户贡献与交互等功能. ( ...
- 作业MathExam
MathExam233 一.预估与实际 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 600 650 • ...
- YQCB冲刺周第七天
站立会议 任务看板 燃尽图 今天的任务为实现个人设置中的修改密码.设置金额的功能.以及界面的美化. 遇到的问题为修改自己密码时获得当前用户的id问题.
- 用java构造一个带层次的文件目录遍历器
import java.util.List; import java.io.File; import java.util.ArrayList; public class IteratorUtil { ...