用poplib庫來檢查指定郵件中的最新2封郵件

2021-08-04 13:39:25 字數 1423 閱讀 2846

返回郵件的主題還有發件人

from email import *

import re,email,email.header

from poplib import pop3

def decode_email_content(msg_src,names):

msg=email.message_from_string(msg_src)#email.message_from_bytes只可以在python 3中執行

#print msg

result =

for name in names:

content = msg.get(name)

#print content

info = email.header.decode_header(content)#解碼

print info

if info[0][1]:

print '^^^^^'

if info[0][1].find('unknown-') ==-1:#已知編碼

result[name] = info[0][0].decode(info[0][1])

else:#未知編碼

try:

result[name] = info[0][0].decode('gbk')

except:

result[name] = info[0][0].decode('utf-8')

else:

result[name] = info[0][0]

return result

if __name__== "__main__":

pp=pop3("pop3.163.com")

pp.user('*******@163.com')

pp.pass_('*******')

total,totalnum = pp.stat()#郵件的數量和郵件總的位元組數

print (total,totalnum)

for i in range(total-2,total):

hinfo,msgs,octet=pp.top(i+1,0)#得到指定郵件中的第一行內容(從0開始)

# print'%%%%%%'

# print hinfo

# print'%%%%%'

# print msgs

# print'&&&&'

# print octet

b=b''

for msg in msgs:

b += msg+b'\n'

items = decode_email_content(b,['subject','from'])

print items['subject'],'\nfrom:',items['from']

pp.quit()

用socket來傳送郵件

以前用vb時,記得有個mail控制項,後來接觸到了cdo.messages這個玩意,發郵件是蠻方便,那還是在vbs的情況下,後來看了下php,perl,發現發郵件乙個函式就可以了,呵呵,那麼這些背後的細節是什麼呢,還是用socket來揭示下吧 郵件傳送離不開一樣東西,smtp,即簡單郵件傳輸協議,對...

用模板來進行型別檢查。

在講述之前,請看c 的型別資訊系統 typeid,sizeof,函式呼叫,模板特化 這幾個dd,或者隱藏地轉換c 的型別,或者直接得到型別資訊 前兩個就不說了,沒什麼可說的。現在說函式呼叫,請看如下 void foo int a 這樣的 也許天天在寫,但是,您有沒有注意到,我們在函式呼叫的時候 fo...

用模板來進行型別檢查。

在講述之前,請看c 的型別資訊系統 typeid,sizeof,函式呼叫,模板特化 這幾個dd,或者隱藏地轉換c 的型別,或者直接得到型別資訊 前兩個就不說了,沒什麼可說的。現在說函式呼叫,請看如下 void foo int a 這樣的 也許天天在寫,但是,您有沒有注意到,我們在函式呼叫的時候 fo...