使用Python的imap和email模組讀取郵件

2021-10-05 23:33:28 字數 2483 閱讀 8309

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所在路徑,第二步驟就是建立兩者的...