python POP讀取郵箱內容

2022-09-18 01:00:12 字數 3314 閱讀 2040

import

poplib

import

refrom email.parser import

parser

from email.header import

decode_header

from email.utils import

parseaddr

#解析訊息頭中的字串

defdecode_str(s):

value, charset =decode_header(s)[0]

ifcharset:

value =value.decode(charset)

return

value

#獲取郵件的字元編碼,首先在message中尋找編碼,如果沒有,就在header的content-type中尋找

defguess_charset(msg):

charset =msg.get_charset()

if charset is

none:

content_type = msg.get('

content-type

', ''

).lower()

pos = content_type.find('

charset=')

if pos >=0:

charset = content_type[pos+8:].strip()

return

charset

#解析郵件的函式,首先列印收件人、發件人、標題

#然後呼叫message的walk迴圈處理郵件中的每乙個子物件(包括文字、html、附件一次或多次)##

由於網路上傳輸的郵件都是編碼以後的格式,需要在get_payload的時候指定decode=true來轉換成可輸出的編碼

#如果郵件是text或者html格式,列印格式並輸出轉碼以後的子物件內容

defprint_info(msg):

for part in

msg.walk():

filename =part.get_filename()

content_type =part.get_content_type()

charset =guess_charset(part)

iffilename:

print('

有附件內容')

else

:

#email_content_type = ''

#content = ''

#if content_type == 'text/plain':

#email_content_type = 'text'

#elif content_type == 'text/html':

#email_content_type = 'html'

ifcharset:

#content = part.get_payload().decode(charset)

content = part.get_payload(decode=true).decode(charset)

verify_code = re.findall(r'

您本次匯出的驗證碼為:([\d]+)

', content)

print

(verify_code)

return

verify_code

defget_sender(msg):

"""獲取發件人

:param msg:

:return:

"""#

for header in ['from', 'to', 'subject']:

#value = msg.get(header, '')

#if value:

#if header == 'subject':

#value = decode_str(value)

#else:

#hdr, addr = parseaddr(value)

#name = decode_str(addr)

#value = name + ' < ' + addr + ' > '

#print(header + ':' + value)

value = msg.get('

from

', ''

) hdr, addr =parseaddr(value)

name =decode_str(addr)

return

name

defrun():

popserver = '

imap.yeah.net

'emailuser = 郵箱號emailpasswd = 授權碼conn =poplib.pop3_ssl(popserver)

conn.user(emailuser)

conn.pass_(emailpasswd)

resp, mails, octets =conn.list()

print

(mails)

index =len(mails)

print

(index)

#取出某乙個郵件的全部資訊 postgre

for i in

range(index):

resp, lines, octets =conn.retr(index)

#郵件取出的資訊是bytes,轉換成parser支援的str

lists =

for e in

lines:

msg_content = '

\r\n

'.join(lists)

msg =parser().parsestr(msg_content)

name =get_sender(msg)

if name == '

[email protected]':

print

(type(msg))

verify_code =print_info(msg)

ifverify_code:

print

(verify_code)

return

verify_code[0]

else

:

print("

獲取驗證碼失敗")

break

else

:

continue

#提交操作資訊並退出

conn.quit()

print(run())

雅虎郵箱內嵌聊天的幾大象徵性意義

雅虎郵箱內嵌聊天的幾大象徵性意義 前不久聽說網易的郵箱將部落格進行深度整合,於是嘗試了一番,後來聽朋友介紹有更牛的,雅虎郵箱將im進行深度整合,理論上分析後者難度會大得多,首先在im開發上就比部落格更難,然後一整合,呵呵,那就不得了了。在此列舉幾個好處和大家分享一下 一,對網易形成直接的震懾 毫無疑...

讀取XML 內容

file f new file system.getproperty user.dir file.separator src userfile.xml 定位檔案 reader new saxreader try catch documentexception e e.printstacktrace ...

讀取磁碟內容

訪問磁碟上某一具體資訊,由3部分時間組成 1.查詢時間 磁頭定位到相應柱面 磁軌 的時間,0.1s 2.等待時間 碟片旋轉到相應盤塊的時間,0.0083s 7200rpm 3.傳輸時間 資料通過系統匯流排傳到記憶體的時間,乙個位元組大概0.02us 磁碟以盤塊 block 為單位讀取資料,即每次讀入...