python获取邮箱地址_Python操作邮箱
from email.parser importParserfrom email.header importdecode_headerfrom email.utils importparseaddrimportpoplib#输入邮件地址, 口令和POP3服务器地址:#email = input('Email: ')#password = input('Password: ')#pop3_server = input('POP3 server: ')
#新浪邮箱测试通过, 密码使用登陆密码#email = "18937905850@sina.cn"#password = "password"#pop3_server = "pop.sina.cn"
#qq邮箱测试通过, 使用授权码, 使用ssl#email = ""#password = ""#pop3_server = "pop.qq.com"
classEmail:def __init__(self,account,password,pop3_server):
self.account=account
self.password=password
self.pop3_server=pop3_serverdefguess_charset(self,msg):
charset=msg.get_charset()if charset isNone:
content_type= msg.get('Content-Type', '').lower()
pos= content_type.find('charset=')if pos >=0:
charset= content_type[pos + 8:].strip()returncharsetdefdecode_str(self,s):
value, charset=decode_header(s)[0]ifcharset:
value=value.decode(charset)returnvaluedef print_info(self,msg, indent=0):if indent ==0:for header in ['From', 'To', 'Subject']:
value= msg.get(header, '')ifvalue:if header == 'Subject':
value=self.decode_str(value)else:
hdr, addr=parseaddr(value)
name=self.decode_str(hdr)
value= u'%s <%s>' %(name, addr)print('%s%s: %s' % (' ' *indent, header, value))if(msg.is_multipart()):
parts=msg.get_payload()for n, part inenumerate(parts):print('%spart %s' % (' ' *indent, n))print('%s--------------------' % (' ' *indent))
self.print_info(part, indent+ 1)else:
content_type=msg.get_content_type()if content_type == 'text/plain' or content_type == 'text/html':
content= msg.get_payload(decode=True)
charset=self.guess_charset(msg)ifcharset:
content=content.decode(charset)print('%sText: %s' % (' ' * indent, content + '...'))else:print('%sAttachment: %s' % (' ' *indent, content_type))defmain(self):#连接到POP3服务器:
#server = poplib.POP3(pop3_server)
#qq需要使用ssl
server =poplib.POP3_SSL(pop3_server)#可以打开或关闭调试信息:
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'1 82923', b'2 2184', ...]
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)
self.print_info(msg)#可以根据邮件索引号直接从服务器删除邮件:
#server.dele(index)
#关闭连接:
server.quit()if __name__ == '__main__':
email= "bestfuture25@qq.com"password= "titeexrfwjutbhhg"pop3_server= "pop.qq.com"Email(email,password,pop3_server).main()
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
