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()
總結
以上是生活随笔為你收集整理的python获取邮箱地址_Python操作邮箱的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 腻子粉多少钱一袋腻子粉购买的4个小技巧
- 下一篇: python字符串常用方法_字符串常用方