直男,直接上代码。
自己看打印的内容
主要功能如下:
#如果邮件内容存在链接则返回链接,若不存在则直接下载邮件附件
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 #搜索未读邮件,打印未读邮件的UID15 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 pass54 #退出邮件55 imapObj.logout()56 #如果邮件内容存在链接则返回链接,若不存在则直接下载邮件附件57 return url58 59 getDowmlodUrl()