DAY5-Python學習筆記
阿新 • • 發佈:2018-05-20
intern rom ttr serve 字符 一個 圖片 ffi col
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學習筆記