📜  在Python中使用 EZGmail 模块处理邮件

📅  最后修改于: 2022-05-13 01:55:39.559000             🧑  作者: Mango

在Python中使用 EZGmail 模块处理邮件

EZGmail是一个Python模块,可用于通过 Gmail 发送和接收电子邮件。它在官方 Gmail API 之上运行。尽管 EZGmail 没有涵盖所有可以使用 Gmail API 完成的任务,但它使常见任务变得非常简单,而使用 Google 自己的 API 则要复杂得多。在本文中,我们将了解如何使用该模块发送、搜索、阅读电子邮件和下载附件。

安装

这个模块没有预装Python。要安装它,请在终端中键入以下命令。

pip install EZGmail

启用 Gmail API

首先,我们需要从官网启用 Gmail API。转到官方谷歌开发者网站Python并按照以下步骤操作。

  • 单击启用 Gmail API按钮。

  • 选择桌面应用程序作为 OAuth 客户端。

  • 接下来,单击下载客户端配置按钮。

  • 将下载一个名为credentials.jsonjson文件。将此文件复制到Python的工作目录。

验证应用程序

接下来,我们需要授权我们的程序使用我们的 Google 帐户。该授权过程只需执行一次。

  • 从Python shell 运行ezgmail.init()
  • 这将打开一个浏览器窗口并将我们带到身份验证页面。然后我们需要选择谷歌账户并授权应用程序使用我们的账户。

设置完成。现在,我们将看看如何使用这个模块。

发送电子邮件

send()函数用于发送电子邮件。

例子:

Python3
import ezgmail
  
email = 'user@email.com'
subject = 'EZGmail Test'
text = 'This is the body of the mail.'
ezgmail.send(email, subject, text)


Python3
import ezgmail
  
# unread emails
unread = ezgmail.unread()
  
print("Summary: "+str(ezgmail.summary(unread)))
print("The first thread in the list: " + str(unread[0]))
print("The first message in the first thread: " + str(unread[0].messages[0]))
  
# attributes of the first message
message = unread[0].messages[0]
  
# subject
print("subject: "+str(message.subject))
  
# body
print("body: "+str(message.body))
  
# sender
print("sender: "+str(message.sender))
  
# timestamp
print("timestamp: "+str(message.timestamp))
  
# recent emails
recent = ezgmail.recent(maxResults=10)
print("List of recent threads: " + str(recent))


Python3
import ezgmail
  
# searching for specific emails
results = ezgmail.search('geeksforgeeks')
print(results[0])
  
# special searches
results = ezgmail.search('has:attachment')
print(results[0])


Python3
import ezgmail
  
# searching emails
# with attachments
results = ezgmail.search('has:attachment')
  
# list of attached filenames
files_attached = results[0].messages[0].attachments
  
# downloading the first file
# in the list
print('Downloading '+files_attached[0])
results[0].messages[0].downloadAttachment(files_attached[0])


这将从我们选择的 Gmail 帐户向收件人发送一封电子邮件。

阅读电子邮件

EZGmail 有GmailThread对象来表示对话线程和GmailMessage 单个电子邮件的对象。 GmailThread对象的messages属性包含对话线程中每条消息的GmailMessage对象列表。

  • unread() :方法返回未读线程的GmailThread对象列表。
  • summary() :在线程对象列表上调用时,返回线程中消息的摘要。
  • messagesGmailThread对象的属性,它返回GmailMessage对象的列表。其中每一个都有描述电子邮件的属性,如主题正文时间戳发件人收件人
  • 最近() :返回最近线程的 GmailThread 对象列表的函数maxResults参数用于设置要显示的最近邮件的数量。默认值为 25。

例子:

Python3

import ezgmail
  
# unread emails
unread = ezgmail.unread()
  
print("Summary: "+str(ezgmail.summary(unread)))
print("The first thread in the list: " + str(unread[0]))
print("The first message in the first thread: " + str(unread[0].messages[0]))
  
# attributes of the first message
message = unread[0].messages[0]
  
# subject
print("subject: "+str(message.subject))
  
# body
print("body: "+str(message.body))
  
# sender
print("sender: "+str(message.sender))
  
# timestamp
print("timestamp: "+str(message.timestamp))
  
# recent emails
recent = ezgmail.recent(maxResults=10)
print("List of recent threads: " + str(recent))

搜索电子邮件

我们还可以搜索特定的电子邮件,就像我们在 gmail 搜索框中输入查询一样。 search()函数返回与搜索参数匹配的GmailMessage对象列表。我们还可以执行特殊的搜索操作,例如:

  • 'from:sender@email.com' :从特定发件人处获取电子邮件
  • 'subject: Python' :带有特定主题的电子邮件
  • 'label:UNREAD' :未读邮件
  • 'has:attachment' :包含附件的电子邮件

例子:

Python3

import ezgmail
  
# searching for specific emails
results = ezgmail.search('geeksforgeeks')
print(results[0])
  
# special searches
results = ezgmail.search('has:attachment')
print(results[0])

下载附件

可以通过将每个文件的名称传递给downloadAttachment()函数来下载附加到消息的文件。

  • GmailMessage 对象的附件属性返回电子邮件所附文件的名称列表。
  • downloadAttachment()方法将这些文件名中的任何一个作为参数并下载该文件。
  • downloadAllAttachments()方法用于一次下载所有文件。

例子:

Python3

import ezgmail
  
# searching emails
# with attachments
results = ezgmail.search('has:attachment')
  
# list of attached filenames
files_attached = results[0].messages[0].attachments
  
# downloading the first file
# in the list
print('Downloading '+files_attached[0])
results[0].messages[0].downloadAttachment(files_attached[0])