这里有新鲜出炉的 Python 多线程编程,程序狗速度看过来!
Python 是一种面向对象、解释型计算机程序设计语言,由 Guido van Rossum 于 1989 年底发明,第一个公开发行版发行于 1991 年。Python 语法简洁而清晰,具有丰富和强大的类库。它常被昵称为胶水语言,它能够把用其他语言制作的各种模块(尤其是 C/C++)很轻松地联结在一起。
这篇文章主要介绍了 Python 实现读取邮箱中的邮件功能, 可读取邮件文本及附件的功能, 涉及 Python 针对邮件的获取、分析、保存等相关操作技巧, 需要的朋友可以参考下
本文实例讲述了 Python 实现读取邮箱中的邮件功能。分享给大家供大家参考,具体如下:
- #-*- encoding: utf-8 -*-
- import sys
- import locale
- import poplib
- from email import parser
- import email
- import string
- # 确定运行环境的encoding
- __g_codeset = sys.getdefaultencoding()
- if "ascii"==__g_codeset:
- __g_codeset = locale.getdefaultlocale()[1]
- #
- def object2double(obj):
- if(obj==None or obj==""):
- return 0
- else:
- return float(obj)
- #end if
- #
- def utf8_to_mbs(s):
- return s.decode("utf-8").encode(__g_codeset)
- #
- def mbs_to_utf8(s):
- return s.decode(__g_codeset).encode("utf-8")
- #
- host = 'pop.exmail.qq.com'
- username = 'user1@xxxx.cn'
- password = 'password'
- pop_conn = poplib.POP3_SSL(host)
- pop_conn.user(username)
- pop_conn.pass_(password)
- #Get messages from server:
- # 获得邮件
- messages = [pop_conn.retr(i) for i in range(1, len(pop_conn.list()[1]) + 1)]
- #print messages
- #print "--------------------------------------------------"
- # Concat message pieces:
- messages = ["\n".join(mssg[1]) for mssg in messages]
- #print messages
- #Parse message intom an email object:
- # 分析
- messages = [parser.Parser().parsestr(mssg) for mssg in messages]
- i = 0
- for index in range(0,len(messages)):
- message = messages[index];
- i = i + 1;
- subject = message.get('subject')
- h = email.Header.Header(subject)
- dh = email.Header.decode_header(h)
- subject = unicode(dh[0][0], dh[0][1]).encode('utf8')
- mailName = "mail%d.%s" % (i, subject)
- f = open('%d.log'%(i), 'w');
- print >> f, "Date: ", message["Date"]
- print >> f, "From: ", email.utils.parseaddr(message.get('from'))[1]
- print >> f, "To: ", email.utils.parseaddr(message.get('to'))[1]
- print >> f, "Subject: ", subject
- print >> f, "Data: "
- j = 0
- for part in message.walk():
- j = j + 1
- fileName = part.get_filename()
- contentType = part.get_content_type()
- mycode=part.get_content_charset();
- # 保存附件
- if fileName:
- data = part.get_payload(decode=True)
- h = email.Header.Header(fileName)
- dh = email.Header.decode_header(h)
- fname = dh[0][0]
- encodeStr = dh[0][1]
- if encodeStr != None:
- fname = fname.decode(encodeStr, mycode)
- #end if
- fEx = open("%s"%(fname), 'wb')
- fEx.write(data)
- fEx.close()
- elif contentType == 'text/plain':# or contentType == 'text/html':
- #保存正文
- data = part.get_payload(decode=True)
- content=str(data);
- if mycode=='gb2312':
- content= mbs_to_utf8(content)
- #end if
- nPos = content.find('降息')
- print("nPos is %d"%(nPos))
- print >> f, data
- #end if
- #end for
- f.close()
- #end for
- pop_conn.quit()
希望本文所述对大家 Python 程序设计有所帮助。
来源: http://www.phperz.com/article/17/0818/344567.html