学习笔记(33):21天通关Python(仅视频课)-使用poplib模块收取邮件

立即学习:https://edu.csdn.net/course/play/24797/282213?utm_source=blogtoedu

import poplib
import email.parser, email.policy

# 创建邮件的连接
# conn= poplib.POP3('pop3.qq.com',110);
conn = poplib.POP3_SSL('pop.qq.com', 995)
conn.set_debuglevel(1)
print(conn.getwelcome().decode('utf-8'))
# 账户
conn.user('3124803200@qq.com')
# 密码
conn.pass_('************')

# 统计邮箱信息
num, totaolSize = conn.stat()
print('邮件数量:', num)
print('邮件大小:', totaolSize)

# 统计邮件的列表
resp, mails, r = conn.list()
print('响应:', resp)
print('列表:', mails)

# 获取最后一封邮件
respo, mailDa, r = conn.retr(mails.__len__())
print('响应:', respo)
print('数据:', mailDa)
#
# 将邮件数据恢复成emailMessage()对象
data = b'\r\n'.join(mailDa)
# msg 代表邮件
msg = email.parser.BytesParser(policy=email.policy.default).parsebytes(data)
print(type(msg))
print('发件人:', msg['from'])
print('收件人:', msg['to'])
print('主题:', msg['subject'])
print('第一个收件人用户名:', msg['to'].addresses[0].username)
print('第一个发件人用户名:', msg['from'].addresses[0].username)
# 遍历邮件的内容 每一个都是一个part
for part in msg.walk():
    # multipart 代表邮件的容器,无需处理
    if part.get_content_type() == 'multipart':
        continue
    # text 代表邮件的正文
    elif part.get_content_type() == 'text':
        print('正文:', part.get_content())
    # 剩下的都是附件
    else:
        # 得到附件名称
        filename = part.get_filename()
        print(filename)
        if filename:
            # 写入本地磁盘
            # print('+'*60)
            # print(part.get_payload())
            with open(filename, 'wb', True) as f:
                f.write(part.get_payload(decode=True))

conn.quit()
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hello-Rock

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值