在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.json ”的json文件。将此文件复制到Python的工作目录。
验证应用程序
接下来,我们需要授权我们的程序使用我们的 Google 帐户。该授权过程只需执行一次。
- 从Python shell 运行ezgmail.init() 。
- 这将打开一个浏览器窗口并将我们带到身份验证页面。然后我们需要选择谷歌账户并授权应用程序使用我们的账户。
设置完成。现在,我们将看看如何使用这个模块。
发送电子邮件
send()函数用于发送电子邮件。
Syntax: ezgmail.send(email, sub, text)
Parameters:
- email : email address of the recipient
- sub : Subject of the email
- text : body of the email
例子:
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() :在线程对象列表上调用时,返回线程中消息的摘要。
- messages : GmailThread对象的属性,它返回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])