Python实现获取邮箱内容并解析的方法示例
本文实例讲述了Python实现获取邮箱内容并解析的方法。分享给大家供大家参考,具体如下:
#-*-coding:utf-8-*-
fromemail.parserimportParser
fromemail.headerimportdecode_header
fromemail.utilsimportparseaddr
importpoplib
#输入邮件地址,口令和POP3服务器地址:
email=input('Email:')
password=input('Password:')
pop3_server=input('POP3server:')
defguess_charset(msg):
charset=msg.get_charset()
ifcharsetisNone:
content_type=msg.get('Content-Type','').lower()
pos=content_type.find('charset=')
ifpos>=0:
charset=content_type[pos+8:].strip()
returncharset
defdecode_str(s):
value,charset=decode_header(s)[0]
ifcharset:
value=value.decode(charset)
returnvalue
defprint_info(msg,indent=0):
ifindent==0:
forheaderin['From','To','Subject']:
value=msg.get(header,'')
ifvalue:
ifheader=='Subject':
value=decode_str(value)
else:
hdr,addr=parseaddr(value)
name=decode_str(hdr)
value=u'%s<%s>'%(name,addr)
print('%s%s:%s'%(''*indent,header,value))
if(msg.is_multipart()):
parts=msg.get_payload()
forn,partinenumerate(parts):
print('%spart%s'%(''*indent,n))
print('%s--------------------'%(''*indent))
print_info(part,indent+1)
else:
content_type=msg.get_content_type()
ifcontent_type=='text/plain'orcontent_type=='text/html':
content=msg.get_payload(decode=True)
charset=guess_charset(msg)
ifcharset:
content=content.decode(charset)
print('%sText:%s'%(''*indent,content+'...'))
else:
print('%sAttachment:%s'%(''*indent,content_type))
#连接到POP3服务器:
server=poplib.POP3_SSL(pop3_server,995)
#可以打开或关闭调试信息:
server.set_debuglevel(1)
#可选:打印POP3服务器的欢迎文字:
print(server.getwelcome().decode('utf-8'))
#身份认证:
server.user(email)
server.pass_(password)
#stat()返回邮件数量和占用空间:
print('Messages:%s.Size:%s'%server.stat())
#list()返回所有邮件的编号:
resp,mails,octets=server.list()
#可以查看返回的列表类似[b'182923',b'22184',...]
print(mails)
#获取最新一封邮件,注意索引号从1开始:
index=len(mails)
resp,lines,octets=server.retr(index)
#lines存储了邮件的原始文本的每一行,
#可以获得整个邮件的原始文本:
msg_content=b'\r\n'.join(lines).decode('utf-8')
#稍后解析出邮件:
msg=Parser().parsestr(msg_content)
print_info(msg)
#可以根据邮件索引号直接从服务器删除邮件:
#server.dele(index)
#关闭连接:
server.quit()
更多关于Python相关内容可查看本站专题:《PythonSocket编程技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》
希望本文所述对大家Python程序设计有所帮助。