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()
# -*- 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()
相关文章推荐
- python 收取邮件poplib和imaplib
- python with...as...用法
- Python_Scrapy_7.回调函数
- Python cpu与cpu上的多线程的区别讲解
- Python 和其他编程语言数据类型的比较
- python删除非空目录的方法
- (转)如何使用Psyco为你的Python程序提速。
- Python模块subprocess小记
- windows平台下如何用Python杀进程
- python round(x)函数
- 用Python生成不依赖dll的exe的操作步骤简介
- python的xml库操作读写文件真是慢的无语,跟直接操作文本型的操作真不是一个级别的
- 使用Python和xml.etree.ElementTree解析xml文件
- python 调用word打开doc文档报错,“word无法启动转换器mswrd632.wpc”
- eclipse新建python项Project interpreter not specified
- python Word 编程
- python数组交集、并集与不同
- python数组交集、并集与不同
- python链接mysql常见问题汇总
- 【转】Python2.6下安装Mysqldb出现DeprecationWarning: the sets module is deprecated from sets错误解决方案