如何使用Python中的POP3协议库(poplib)和电子邮件处理库(email)读取邮件

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协议连接到邮箱服务器,然后使用邮箱账号和授权码登录邮箱。接着获取邮件列表,遍历列表并处理每封邮件,获取邮件信息和内容,处理附件,并最终打印邮件信息。最后关闭连接。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值