Python imaplib 模块2025年3月17日 | 阅读 8 分钟 很多时候,我们希望通过程序从邮件中检索信息或数据,但又不想将邮件下载到设备上。当我们需要从邮件中获取信息并查找特定数据时,也会出现这种情况。 我们有许多 Python 模块可以通过程序获取电子邮件数据,但其中大多数模块在检索信息时会下载邮件。这正是我们不希望发生的,因为我们不需要将邮件信息保存在系统中,或者很多时候我们正在别人的系统上工作,只需要查看电子邮件中的某些特定信息。但 Python 中有一些模块和协议,我们可以通过它们从电子邮件中检索信息,而无需实际将其下载到系统中。其中一个这样的模块是“imaplib”模块,它为我们提供了访问 IMAP 协议的功能,用于从邮件中访问和检索数据。 在本教程中,我们将学习 Python 的“imaplib”模块和 IMAP 协议,我们还将学习如何使用此协议从电子邮件中检索信息。 Python 的 imaplib 模块imaplib 是一个 Python 模块或库,它为我们提供客户端类,以便我们可以与 IMAP 版本 4 服务器建立通信,并且通过此 IMAP 通信,我们可以从电子邮件中检索数据。imaplib 库为我们提供了三个客户端类,用于在使用 Python 中的 IMAP 协议与服务器通信时。以下是 Python 的 imaplib 模块中为我们提供的三个客户端类
这些 imaplib 模块的类用于在通过 Python 程序使用 IMAP 协议访问电子邮件数据时与服务器建立通信。 Python 的 imaplib 模块:安装imaplib 模块是 Python 的预安装库,随 Python 安装包一起提供,因此我们无需执行任何安装过程来安装此库。相反,我们可以通过使用“import”关键字将其导入程序,直接在 Python 程序中使用 imaplib 模块的函数。 Python 中的 IMAP 协议IMAP 是一种电子邮件检索协议,代表 Internet Mail Access Protocol (互联网邮件访问协议),我们将通过 Python 程序使用此协议访问电子邮件中存在的数据。IMAP 协议最初于 1986 年提出,此模块不会将电子邮件下载到我们的系统中以从中检索数据。IMAP 模块只是读取电子邮件中存在的数据并在程序的输出中显示它们。此协议对于处于低带宽条件下的设备非常有用。我们必须将 IMAP 模块与 Python 的 imaplib 模块(这是一个客户端库)一起使用,才能从电子邮件中检索数据。IMAP 模块将使用 imaplib 模块的客户端类并与服务器建立通信,以便它可以从电子邮件中检索数据并将其显示在输出中。 IMAP 协议的关键点以下是 IMAP 协议的一些关键点,我们必须记住,并且在通过它从电子邮件中检索数据时对我们非常有用
这些是 IMAP 协议的一些关键点,我们应该记住,它们在使用此协议的 Python 程序中将对我们非常有帮助。我们可以执行上述 IMAP 协议关键点中提到的所有操作。 IMAP 命令IMAP 协议有几个不同的命令,用于通过它执行几个不同的操作。使用 IMAP 协议的这些命令,我们可以对我们的邮箱执行多个操作,因此这些命令帮助我们从电子邮件中检索信息。以下是 IMAP 协议命令及其描述的列表,其中一些将在本协议的实现部分中使用
这些是 IMAP 协议的重要命令。在使用 IMAP 协议从邮件中检索信息和更改邮箱时,我们必须使用这些命令。在建立或关闭与电子邮件服务器的连接时,我们也会使用这些命令。 Python 的 imaplib 模块:实现在本教程的前几节中,我们已经学习了 IMAP 协议以及用于从电子邮件中检索信息和更改邮箱的命令。我们通过 imaplib 模块在 Python 中实现此 IMAP 协议,方法是在程序中使用此模块中的函数。为了学习如何通过 imaplib 模块实现 IMAP 协议,我们将使用一个示例程序,其中我们使用此模块中的函数并与电子邮件服务器通信。 示例 查看以下 Python 程序,我们将使用 imaplib 模块并与电子邮件服务器建立连接 输出 Message: b'1' (b'Delivered-To: [email protected]\r\nReceived: by 2002:a05:6839:408' b'e:0:0:0:0 with SMTP id dt14csp1139908nkc;\r\n Thu, 18 Nov 2021 21:1' b'8:23 -0800 (PST)\r\nX-Received: by 2002:a02:6901:: with SMTP id e1mr248002' b'85jac.0.1637299103144;\r\n Thu, 18 Nov 2021 21:18:23 -0800 (PST)\r\nA' b'RC-Seal: i=1; a=rsa-sha256; t=1637299103; cv=none;\r\n d=google.com'? https://notifications.google.c=\r\nom/' b'g/img/AD-FnEznfDyGI_ixnq3rHvh5p8bctFcd4ga52j55D-mp0uud4w.gif></body>\r\n ' b'</html>\r\n\r\n--000000000000b5138a05d11d6681--\r\n') ![]() 如我们所见,收件箱中电子邮件的数据已打印在输出中,并且输出因人而异。 解释:我们首先在程序中导入了 imaplib 和 pprint 模块,以使用它们的函数来实现 IMAP 协议。我们在程序中将 imaplib 导入为 imp,将 pprint 模块导入为 pp。之后,我们初始化了 imapHostServer 变量,其中我们定义了电子邮件的服务器路径。然后,我们初始化了两个变量,即 imapUserEmail 和 imapPassword,其中我们分别定义了电子邮件的用户电子邮件 ID 和密码(出于安全原因,我们在程序中定义的密码不是正确的密码)。在自己的系统中实现此程序时,可以使用自己的电子邮件 ID 和密码。之后,我们定义了 imapVar 变量,其中我们使用了 imaplib 模块中的 IMAP4_SSL() 函数,并将 imapHostServer 作为函数的参数。此函数将与电子邮件服务器建立连接,然后我们使用 login() 函数访问我们的电子邮件。我们在 login() 函数中将 imapUserEmail 和 imapPassword 作为我们的电子邮件帐户的电子邮件 ID 和密码的参数。然后,我们使用 select() 函数选择“收件箱”邮箱并检索收件箱中存在的电子邮件。之后,我们使用 search() 函数从收件箱中存在的电子邮件中搜索数据。最后,我们使用 for 循环遍历收件箱中存在的所有电子邮件,并从输出中检索信息。我们已在 for 循环中使用了 fetch() 函数来从电子邮件中获取数据,并使用了 pprint() 函数来打印邮件中存在的信息。 注意:我们在程序中使用了 pprint 模块,它也是 Python 的内置模块,并且使用它来打印输出中的数据非常重要。结论我们可以使用 IMAP 协议从电子邮件中检索数据,而无需实际将它们下载到我们的系统中。要实现 IMAP 协议,我们必须使用 imaplib 模块,它为我们提供了三个 IMAP 客户端类。我们可以使用 IMAP 的各种命令在电子邮件中执行多种功能。我们必须在 Python 程序中使用 imaplib 模块来实现 IMAP 协议并从电子邮件中获取数据或维护连接。 下一个主题Python lxml 模块 |
有时 Web 应用程序需要使用 Python 语言在一个函数中显示两个值。这对于复杂功能、数学运算和数据库信息的显示是必要的。Python 提供了多种方法来返回两个值。使用对象 使用元组 使用列表 使用数据类 使用字典 使用对象 它...
5 分钟阅读
切比雪夫多项式是正交多项式家族,用于数学的各个分支,例如信号处理、数值分析和近似理论。切比雪夫多项式可用于使用切比雪夫级数近似函数。切比雪夫级数是切比雪夫多项式的集合...
阅读 3 分钟
在本教程中,我们将学习 Python 中的 Boruvka 算法。它用于识别最小生成树。捷克数学家 Otakar Boruvka 介绍了这种算法,并因其在图论方面的工作而闻名。这种算法是寻找...
阅读 15 分钟
在本教程中,我们将编写一个 Python 程序,打印出列表元素所有可能的组合。我们将以三个不同的整数作为输入,并打印出这些数字所有可能的组合。这是一个相当简单的程序;它可能会被问到...
阅读 3 分钟
- Cookie 的设置方法 Cookie 的处理是 Web 应用程序的一个重要概念。Django 提供了与 Cookie 交互的简单方法。Cookie 允许我们存储和检索保存在会话中的数据。会话和 Cookie 与……
阅读 6 分钟
Python 允许文件操作(创建、保存、读取、写入、删除文件等等)。Python 简化了多种文件格式的保存,并保存了多种文件格式。JSON 是 JavaScript 对象表示法。数据通过基于文本的计算机语言脚本(可执行)文件存储和发送。Python 的 json 模块支持 JSON。JSON...
阅读 3 分钟
在本教程中,我们将编写 Python 程序以查找给定字符串的排列。问题是给定字符串 S,我们需要按字典序找到给定字符串的所有唯一排列。下面是一个示例 - 示例 - 1:输入:……
7 分钟阅读
我们知道像 Python 这样的编程语言是一种解释型语言,这本质上意味着每个代码块或代码行都一个接一个地处理,而不是将整个程序一次性更改为低级代码。每当 Python 解释器扫描一行代码时……
7 分钟阅读
函数注解是一些随机表达式,它们与函数一起编写,并在编译时进行评估。它们在运行时不存在,并且这些表达式对 python 没有意义。它们由第三方使用和解释,或者...
阅读 3 分钟
您可以使用 Python 的 not 运算符反转任何布尔表达式或对象的真值。这个 Python 运算符可以应用于 if-elif 语句以及 for 或 while 循环等布尔条件。它也可以在非布尔环境中运行,使您能够反转变量的真值...
阅读 8 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India