1. 程式人生 > >使用pop3檢視最新郵件的主題(subject)

使用pop3檢視最新郵件的主題(subject)

import  poplib
from email.header import decode_header
from email.mime.text import MIMEText
import email

#如何讀取郵件
#第一步:用poplib把郵件的原始文字下載到本地;
#第二部:用email解析原始文字,還原為郵件物件。

read = poplib.POP3("pop.163.com") #如果使用pop.qq.com會報錯
#read.set_debuglevel(1) # 可以開啟或關閉除錯資訊:
read.user("[email protected]") #設定登陸賬號
read.pass_("a806573") #設定登陸密碼,是授權碼
tongji = read.stat() #返回的是郵箱基本統計資訊,返回的是兩個引數,第一為郵件個數,第二是位元組總數
str = read.top(tongji[0],0) #伺服器將返回由引數標識的郵件前0行內容,最後str為一個列表,有三個元素
#由引數標識是指只有系統能識別,肉眼看不出來。
print(str) #str是一個元組,有三個元素,我們需要使用第二個元素,也就是str[1],它也是一個列表就能拿到郵件具體的資訊
str2 = []
for x in str[1]: #迴圈str[1]中的所有元素並進行編碼
try:
str2.append(x.decode()) #先嚐試預設編碼,如果不是的話嘗試gbk編碼,如果還不是就嘗試big5編碼
except:
try:
str2.append(x.decode('gbk'))
except:
str2.append(x.decode('big5'))
#這個方法能把string的郵件轉換成email.message物件,msg是把經過編碼的str2轉化為
# 可識別的郵件資訊,並且每行一個資訊,jobin用來連結字串
msg = email.message_from_string('\n'.join(str2))
print(msg)
biaoti = decode_header(msg['subject'])
print(biaoti)
if biaoti[0][1]: #如果biaoti有第二個元素,說明有編碼資訊,比如第二個元素是utf-8
#使用biaoti的第一個元素去解碼biaoti的第0個元素
biaoti2 = biaoti[0][0].decode(biaoti[0][1])
else:
biaoti2 = biaoti[0][0]
print(biaoti2)