直男,直接上代碼。
自己看打印的內容
主要功能如下:
#如果郵件內容存在鏈接則返回鏈接,若不存在則直接下載郵件附件

1 import imapclient,re 2 import pyzmail 3 4 5 #提取郵件里面的鏈接 6 def getDowmlodUrl(): 7 url = None 8 #這里是騰訊企業郵箱,其他的自行百度 9 imapObj = imapclient.IMAPClient('imap.exmail.qq.com',ssl=True) 10 #郵箱和密碼 11 imapObj.login('xxxx@xxx.com','xxxxxxx') 12 #默認收件箱 13 imapObj.select_folder('INBOX',readonly=True) 14 #搜索未讀郵件,打印未讀郵件的UID 15 UIDS = imapObj.search('UNSEEN') 16 print(UIDS) 17 #UIDS = imapObj.search('ALL')#搜索全部的郵件 18 if len(UIDS) >= 1:#存在未讀郵件 19 #獲得郵件內容 20 rawMessage = imapObj.fetch(UIDS[0],[b'BODY[]']) 21 #選擇第一封未讀郵件 22 messageObj = pyzmail.PyzMessage.factory(rawMessage[UIDS[0]][b'BODY[]']) 23 #打印郵件信息,可以根據這些信息進行篩選 24 print(messageObj.get_subject())#郵件主題 25 print(messageObj.get_addresses('from'))#發件人 26 print(messageObj.get_addresses('to'))#收件人 27 print(messageObj.get_addresses('cc')) 28 print(messageObj.get_addresses('bcc')) 29 30 #郵件內容不為空時 31 if messageObj.html_part != None: 32 messageContent = messageObj.html_part.get_payload().decode(messageObj.html_part.charset) 33 #打印郵件內容 34 print(type(messageContent),messageContent) 35 #提取郵件內容里面的鏈接 36 pattern = re.compile(r'//[0-9A-Za-z./\\?\\=\\:]+') 37 m = re.search(pattern,messageContent) 38 print('m',m) 39 if m is not None: 40 print('http:' + m.group(0)) 41 url = 'http:' + m.group(0) 42 #如果沒有則取提起郵件的附件 43 else: 44 for part in messageObj.walk(): 45 # name = part.get_param('name') 46 if part.get_filename() != None: 47 # print(part,part.get_filename()) 48 with open(part.get_filename(), 'wb') as f: 49 f.write(part.get_payload(decode=True)) 50 #設置郵件已讀 51 imapObj.set_flags(rawMessage, b'\\Seen', silent=False) 52 else: 53 pass 54 #退出郵件 55 imapObj.logout() 56 #如果郵件內容存在鏈接則返回鏈接,若不存在則直接下載郵件附件 57 return url 58 59 getDowmlodUrl()