编程 | 详解使用Python接收邮件

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
简介: 编程 | 详解使用Python接收邮件

学会大概需要 1 分钟。


1.基本步骤



连接到服务器。登陆。发出服务请求。退出。


2.返回邮箱中的最新邮件


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 = 'pop.163.com'
    # 开始连接到服务器
    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


3.解析邮件主题



# 用来解析邮件主题
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


4.解析邮件来源



# 用来解析邮件来源
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))


5.解析邮件内容



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,开发一个使用邮箱聊天的客户端了~

相关文章
|
1天前
|
存储 数据采集 人工智能
探索Python编程之美——从基础到进阶
【9月更文挑战第9天】本文是一篇深入浅出的技术分享文章,旨在引导读者从零基础开始掌握Python编程。我们将通过生动的实例和代码示例,探讨Python的基本语法、数据结构、函数、模块以及面向对象编程等核心概念。无论你是初学者还是有一定经验的开发者,都能在这篇文章中找到有价值的内容。让我们一起开启Python编程之旅吧!
16 11
|
2天前
|
Python
探索Python编程的奥秘:打造你的第一个程序
【9月更文挑战第8天】本文将带你进入Python编程的世界,通过一个有趣的项目——制作一个简单的猜数字游戏,让你快速入门。我们不仅会分享代码编写的步骤,还会讲解每一行代码的含义和作用,确保即使是编程新手也能跟上节奏。文章末尾附有完整代码,方便读者实践和学习。
19 12
|
3天前
|
API Python
探索Python中的多线程编程
探索Python中的多线程编程
22 5
|
3天前
|
Python
揭秘!Python系统编程里那些让代码自由穿梭的神奇代码行
【9月更文挑战第9天】在Python的世界里,一些简洁的代码行却蕴含着强大的功能,如列表推导式让列表生成仅需一行代码:`squares = [x**2 for x in range(10)]`。`with`语句则能自动管理文件和网络连接的关闭,如`with open('example.txt', 'r') as file:`。`lambda`函数和装饰器则允许快速定义函数和增强功能,而上下文管理器更是资源处理的利器。这些特性让Python代码更加优雅高效。
11 4
|
1天前
|
安全 数据安全/隐私保护 Python
Python系统编程实战:文件系统操作与I/O管理,让你的代码更优雅
【9月更文挑战第10天】Python不仅在数据分析和Web开发中表现出色,在系统编程领域也展现出独特魅力。本文将带你深入探讨Python中的文件系统操作与I/O管理,涵盖os、shutil和pathlib等模块的基础使用方法,并通过示例代码展示如何优雅地实现这些功能。通过掌握缓冲、异步I/O等高级特性,你将能够编写更高效、安全且易于维护的Python代码。示例包括使用pathlib遍历目录、设置缓冲区提升文件写入性能以及使用aiofiles实现异步文件操作。掌握这些技能,让你在Python系统编程中更加得心应手。
10 2
|
3天前
|
存储 Java 数据处理
深入骨髓的Python系统编程:文件系统操作与I/O管理,揭秘底层奥秘
【9月更文挑战第9天】本文通过问答形式深入探讨Python中文件系统操作与I/O管理的核心技巧,涵盖高效遍历文件系统、理解I/O缓冲机制、并行处理文件I/O以及关键异常处理方法。通过具体示例代码,展示了如何利用os和pathlib模块简化文件遍历,控制I/O缓冲,使用多进程提高处理效率,并妥善处理各种I/O异常,助你提升Python系统编程能力。
16 3
|
4天前
|
安全 开发者 Python
揭秘Python IPC:进程间的秘密对话,让你的系统编程更上一层楼
【9月更文挑战第8天】在系统编程中,进程间通信(IPC)是实现多进程协作的关键技术。IPC机制如管道、队列、共享内存和套接字,使进程能在独立内存空间中共享信息,提升系统并发性和灵活性。Python提供了丰富的IPC工具,如`multiprocessing.Pipe()`和`multiprocessing.Queue()`,简化了进程间通信的实现。本文将从理论到实践,详细介绍各种IPC机制的特点和应用场景,帮助开发者构建高效、可靠的多进程应用。掌握Python IPC,让系统编程更加得心应手。
12 4
|
5天前
|
数据采集 机器学习/深度学习 存储
Python编程入门:从基础到实战
【9月更文挑战第6天】本文将引导你走进Python的世界,从零基础开始,逐步掌握Python的基础语法和常用库。我们将通过实例讲解,让你在轻松愉快的氛围中学习Python编程。最后,我们还将分享一些实用的技巧和资源,帮助你在学习过程中不断进步。让我们一起开启Python编程之旅吧!
25 4
|
4天前
|
Linux iOS开发 MacOS
从入门到精通:Python 系统编程中的跨平台兼容性攻略
【9月更文挑战第8天】在编程领域,Python 因其简洁强大而广受青睐。本文深入探讨 Python 系统编程中的跨平台兼容性策略,帮助开发者应对不同操作系统(如 Windows、Linux 和 macOS)间的差异。通过使用 `os` 和 `subprocess` 模块,文章详细讲解了如何处理文件路径、进程管理和环境变量等跨平台问题,使代码能够在多种平台上无缝运行。实践这些方法将助力开发者编写出更加稳健和兼容的 Python 程序。
7 2
|
4天前
|
存储 JSON API
Python编程:解析HTTP请求返回的JSON数据
使用Python处理HTTP请求和解析JSON数据既直接又高效。`requests`库的简洁性和强大功能使得发送请求、接收和解析响应变得异常简单。以上步骤和示例提供了一个基础的框架,可以根据你的具体需求进行调整和扩展。通过合适的异常处理,你的代码将更加健壮和可靠,为用户提供更加流畅的体验。
20 0