今天玩一下python得邮件解析吧,查看邮件内容小儿科,我们下载邮件的附件
直男,直接上代码。
自己看打印的内容
主要功能如下:
#如果邮件内容存在链接则返回链接,若不存在则直接下载邮件附件
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()