smtp傳送郵件的博文很多,但完整讀取郵件的較少,本文主要是python3讀取郵件的編碼,同時使用beautifulsoup解析郵件內容。
python版本資訊,如下:
python 3.8.2 (tags/v3.8.2:7b3ab59, feb 25 2020, 23:03:10) [msc v.1916 64 bit (amd64)] on win32
import email
import imaplib
from bs4 import beautifulsoup
defmain()
:try
: conn = imaplib.imap4_ssl(host=
'imap.***.com'
, port=
'993'
)# 讀取郵件的使用者名稱和密碼
conn.login(
'***@qq.com'
,'your password'
)# 預設選擇收件箱 inbox
conn.select(
)# recent\seen引數不起作用,暫先讀取所有郵件
status, data = conn.search(
none
,'all'
)if status !=
'ok'
:raise exception(
'讀取郵件發生錯誤'
) emailids = data[0]
.split(
)# 倒序讀取郵件
mail_counts =
len(emailids)
for i in
range
(mail_counts-1,
0,-1
):# 獲取郵件資訊
status, edata = conn.fetch(emailids[i]
,'(rfc822)'
)# message物件
msg = email.message_from_bytes(edata[0]
[1])
# 標題
subject = email.header.decode_header(msg.get(
'subject'))
# subject包含文件編碼
default_code = subject[0]
[1]# print('content_type', msg.get_content_type())
ctype = msg.get_content_type(
)# 是否multipart型別,分別處理
if msg.is_multipart():
pl = msg.get_payload(
)for m in pl:
ctype = m.get_content_type()if
'html'
in ctype:
# 注意decode引數,如果是true將解碼base64/quoted-printable等格式編碼內容,否則不解碼
html =
str(m.get_payload(decode=
true
), m.get(
'content-type'
).split(
'=')[1
])# beautifulsoup解析網頁
soup = beautifulsoup(html,
"lxml"
) divs = soup.select(
'body'
)for d in divs:
# 提取所有文字內容
text = d.get_text(strip=
true
)print
(text)
else
: html =
str(msg.get_payload(decode=
true
), default_code)
# beautifulsoup解析網頁
soup = beautifulsoup(html,
"lxml"
)# 提取body標籤裡面的所有文字內容
divs = soup.select(
'body'
)for d in divs:
text = d.get_text(strip=
true
)print
(text)
except exception as ex:
print
(ex)
finally
:# close
conn.close(
) conn.logout(
)if __name__ ==
"__main__"
: main(
)
pygrametl的使用 python的ETL包
pygrametl是乙個python的package用於etl extract transform load 簡例import mysqldb from pygrametl.datasources import sqlsource conn mysqldb.connect host localhos...
Python 中 and 和 or 的使用
and python 中的and 從左到右計算表示式,若所有值均為真,則返回最後乙個值,若存在假,返回第乙個假值。or or 也是從左到有計算表示式,返回第乙個為真的值。文字可能有些繞,可以看下面這張圖 也就是說 x or y 的值 只可能是x或y x為真就是x,x為假就是y x and y 的值 ...
Python和 pycharm的使用
python和 pycharm的使用 安裝後需要啟用碼。判斷python是否安裝好了,cmd下跑 python version 例如c python34 c python34 scripts 3.在pycharm中建立專案配置選擇就可以選擇配置好的python.exe所在路徑,第二步驟就是建立兩者的...