#!/usr/bin/python
# -*- coding: utf-8 -*-
import imaplib
import time
import email
import re
mailServer = "imap.163.com"
mailUser = "aaaaaaaa@163.com"
mailPassWord = "1111111111"
def parseEmail(msg):
# 循环信件中的每一个mime的数据块
mailContentDict = {}
fileList = []
mailContent = ''
for part in msg.walk():
if not part.is_multipart(): # 这里要判断是否是multipart,是的话,里面的数据是无用的,至于为什么可以了解mime相关知识。
contenttype = part.get_content_type()
filename = part.get_filename()
if filename:
# 下面的三行代码只是为了解码象=?gbk?Q?=CF=E0=C6=AC.rar?=这样的文件名
h = email.Header.Header(filename)
dh = email.Header.decode_header(h)
fname = dh[0][0]
encodeStr = dh[0][1]
#将附件名转换为unicode
fname = fname.decode(encodeStr,'ignore')
data = part.get_payload(decode=True) # 解码出附件数据,然后存储到文件中
fileDict = {}
fileDict["fileName"] = fname
fileDict["fileContent"] = data
fileList.append(fileDict)
else:
#不是附件,是文本内容
mailContent = part.get_payload(decode=True) # 解码出文本内容,直接输出来就可以了。
mailContentDict["mailContent"] = mailContent
mailContentDict["fileList"] = fileList
return mailContentDict
def main(): # login while 1: imapServer = imaplib.IMAP4(mailServer) imapServer.login(mailUser, mailPassWord) imapServer.select() # list items on server #resp, items = imapServer.search(None, "ALL") #all Message. mailResp, mailItems = imapServer.search(None, "Recent") #Message has not been read. #resp, items = imapServer.search(None, "Seen") #Message has been read. #resp, items = imapServer.search(None, "Answered") #Message has been answered. #resp, items = imapServer.search(None, "Flagged") #Message is "flagged" for urgent/special attention. #resp, items = imapServer.search(None, "Deleted") ##python无法看到已删除邮件 #resp, items = imapServer.search(None, "Draft") ##python无法看到草稿箱内的邮件 for i in mailItems[0].split(): resp, mailData = imapServer.fetch(i, "(RFC822)") ##读取邮件信息 mailText = mailData[0][1] mail_message = email.message_from_string(mailText) mailContentDict = parseEmail(mail_message) nowTime=time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())) #print mail_message print mail_message['subject'] print mail_message['from'] print mail_message['to'] print mailContentDict imapServer.close() imapServer.logout() time.sleep(0) """ mailFile = StringIO.StringIO(mailText) mailMessage = rfc822.Message(mailFile) print message['from'] newMail = dict(mailMessage.items()) mailMessage.fp.read() #server.store(items[i], '+FLAGS', '\\Deleted')##删除指定的一份邮件 """if __name__ =="__main__": main()