1. 程式人生 > >DAY5-Python學習筆記

DAY5-Python學習筆記

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學習筆記