“ 阅读大概需要 5 分钟”
连接到服务器。
登陆。
发出服务请求。
退出。
import poplib
import poplib
import base64
from email.parser import Parser
from email.header import decode_header
from email.utils import parseaddr
def get_email_content():
useraccount = '邮箱账号'
password = '邮箱密码(客户端授权码非登陆密码)'
# 邮件服务器地址,以下为网易邮箱
pop3_server = ''
# 开始连接到服务器
server = poplib.POP3(pop3_server)
# 打开或者关闭调试信息,为打开,会在控制台打印客户端与服务器的交互信息
server.set_debuglevel(1)
# 打印POP3服务器的欢迎文字,验证是否正确连接到了邮件服务器
print(server.getwelcome().decode('utf8'))
# 开始进行身份验证
server.user(useraccount)
server.pass_(password)
# 返回邮件总数目和占用服务器的空间大小(字节数), 通过stat()方法即可
email_num, email_size = server.stat()
print("消息的数量: {0}, 消息的总大小: {1}".format(email_num, email_size))
# 使用list()返回所有邮件的编号,默认为字节类型的串
rsp, msg_list, rsp_siz = server.list()
print("服务器的响应: {0},\n消息列表: {1},\n返回消息的大小: {2}".format(rsp, msg_list, rsp_siz))
print('邮件总数: {}'.format(len(msg_list)))
# 下面单纯获取最新的一封邮件
total_mail_numbers = len(msg_list)
rsp, msglines, msgsiz = server.retr(total_mail_numbers)
# print("服务器的响应: {0},\n原始邮件内容: {1},\n该封邮件所占字节大小: {2}".format(rsp, msglines, msgsiz))
msg_content = b'\r\n'.join(msglines).decode('gbk')
msg = Parser().parsestr(text=msg_content)
print('解码后的邮件信息:\n{}'.format(msg))
# 关闭与服务器的连接,释放资源
server.close()
return msg
# 用来解析邮件主题
from email.header import decode_header
def parser_subject(msg):
subject = msg['Subject']
value, charset = decode_header(subject)[0]
if charset:
value = value.decode(charset)
print('邮件主题: {0}'.format(value))
return value
# 用来解析邮件主题
from email.header import decode_header
return value
# 用来解析邮件来源
from email.utils import parseaddr
print('发送人邮箱名称: {0},发送人邮箱地址: {1}'.format(name, addr))
# 用来解析邮件来源
from email.utils import parseaddr
from email.header import decode_header
def parser_address(msg):
hdr, addr = parseaddr(msg['From'])
# name 发送人邮箱名称, addr 发送人邮箱地址
name, charset = decode_header(hdr)[0]
if charset:
name = name.decode(charset)
print('发送人邮箱名称: {0},发送人邮箱地址: {1}'.format(name, addr))
import base64
text_content = base64.b64decode(text).decode(content_charset) # base64解码
print('文本信息: {0}'.format(text_content))
import base64
# 正文信息是被base64编码后的串,需要获取编码格式进行解码
def parser_content(msg):
content = msg.get_payload()
# 文本信息
content_charset = content[0].get_content_charset() # 获取编码格式
text = content[0].as_string().split('base64')[-1]
text_content = base64.b64decode(text).decode(content_charset) # base64解码
print('文本信息: {0}'.format(text_content))
下一步就可以配合qt,开发一个使用邮箱聊天的客户端了~