您的位置:首页 > 编程语言 > Python开发

python收取未读邮件,已读邮件,未回复邮件

2015-06-19 16:17 549 查看
#!/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()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: