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()


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部