import poplib
import email.parser, email.policy
import base64
# 邮箱账号和授权码
EMAIL_ACCOUNT = 'your_email@example.com'
EMAIL_PASSWORD = 'your_password'
# POP3服务器地址和端口号
POP3_SERVER = 'pop.example.com'
POP3_PORT = 995
# 连接到POP3服务器
conn = poplib.POP3_SSL(POP3_SERVER, POP3_PORT)
# 登录邮箱
conn.user(EMAIL_ACCOUNT)
conn.pass_(EMAIL_PASSWORD)
# 获取邮件列表
response, maillist, r = conn.list()
print('响应:', response)
print('邮件列表:', maillist)
# 遍历邮件列表并处理每封邮件
for i in range(len(maillist)):
# 获取邮件编号和大小
mailinfo = maillist[i].decode().split()
mailnum = mailinfo[0]
mailsize = mailinfo[1]
# 获取邮件内容
response, data, r = conn.retr(mailnum)
msg_data = b'\r\n'.join(data)
msg = email.parser.BytesParser(policy=email.policy.default).parsebytes(msg_data)
# 获取邮件信息
from_addr = msg.get('From')
to_addr = msg.get('To')
subject = msg.get('Subject')
# 处理邮件内容
for part in msg.walk():
# multipart 代表邮件内容的容器,无需处理
if part.get_content_type().split("/", 1)[0] == 'multipart':
continue
elif part.get_content_type().split("/", 1)[0] == 'text':
body = part.get_content()
else:
filename = part.get_filename()
# 将Base64编码的附件数据解码为二进制数据
filedata = base64.b64decode(part.get_payload())
# 处理附件
# ...
# 打印邮件信息
print('From: ', from_addr)
print('To: ', to_addr)
print('Subject: ', subject)
print('Body: ', body)
# 关闭连接
conn.quit()
这段代码通过POP3_SSL协议连接到邮箱服务器,然后使用邮箱账号和授权码登录邮箱。接着获取邮件列表,遍历列表并处理每封邮件,获取邮件信息和内容,处理附件,并最终打印邮件信息。最后关闭连接。