码迷,mamicode.com
首页 > 编程语言 > 详细

DAY5-Python学习笔记

时间:2018-05-19 23:51:20      阅读:437      评论:0      收藏:0      [点我收藏+]

标签:pytho   post   tar   信息   tle   sub   语言   www.   服务器   

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学习笔记

标签:pytho   post   tar   信息   tle   sub   语言   www.   服务器   

原文地址:https://www.cnblogs.com/xussi/p/9062112.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!