跳转到主要内容

Python接口,用于在Google Mail上过滤电子邮件。

项目描述

使用Python管理您的Gmail电子邮件

Python package Coverage Status Code style: black

pydatamail_google是一个Python模块,用于通过Gmail API自动过滤Gmail上的电子邮件。您可以选择编写自己的Python脚本来组合不同的功能,或者使用基于JSON的输入或命令行输入,所有三种方法都提供对相同功能的无缝访问,具体说明如下。

配置

pydatamail_google将配置文件存储在用户主目录中的~/.pydatamail。此文件夹包含以下内容:

  • config.json 基于JSON的输入的JSON配置文件,具体说明如下。
  • credentials.json 用于Google API的认证凭据,至少需要访问Gmail,如果您想在Google Drive上存储附件,还需要额外的Google Drive访问权限。
  • token_files 令牌目录用于存储访问API的活动令牌,这些令牌会自动创建,用户通常无需修改。

安装

使用pip从GitHub安装软件包

pip install git+https://github.com/pyscioffice/pydatamail_google.git

最后,在您的Google Apps中设置credentials.json并将其存储在~/.pydatamail/credentials.json中。

Python接口

导入pydatamail_google模块

from pydatamail_google import Gmail

初始化pydatamail_google

Gmail()类创建一个gmail对象

gmail = Gmail()

出于测试目的,您可以使用client_service_file参数来指定认证凭据的位置,如果它们不在~/.pydatamail/credentials.json中。

列出标签

列出您Gmail账户中的可用标签

gmail.labels

返回您在电子邮件客户端中定义的电子邮件标签列表。这与通常返回标签ID而不是用户定义标签名的Gmail API不同。

过滤电子邮件

使用预定义的字典列表在特定标签中过滤一组电子邮件

gmail.filter_label_by_sender(label, filter_dict_lst)

标签可以是任何电子邮件标签,而filter_dict_lst是一个作为字典定义的电子邮件过滤器列表。一个典型的电子邮件过滤器列表可能如下所示:

[{"from": "my_email@provider.com", "label": "my_special_label"},
 {"to": "spam@google.com", "label": "another_email_label"},
 {"subject": "you won", "label": "success_story"}]

在当前阶段,每个过滤器只能验证三个字段中的一个:fromtosubject,并且所有过滤器都应用于“包含”而不是精确匹配。

搜索电子邮件

通过特定查询搜索电子邮件,或者可选地限制搜索到标签列表。

gmail.search_email(query_string="", label_lst=[], only_message_ids=False)

query_string支持Gmail搜索提供的所有功能,例如,您可以使用查询"has:attachment"搜索带有附件的电子邮件。此外,通过选项only_message_ids,返回值可以减少到仅电子邮件ID列表,否则将返回电子邮件ID和线程ID。

删除标签

由于Gmail提供一组智能标签,这些标签可在网页界面中访问,但在移动应用程序中通常隐藏,因此许多人想要删除这些标签。不过,此功能更为通用,可以应用于任何标签列表,因此在使用时请小心。

gmail.remove_labels_from_emails(label_lst)

要删除Gmail智能标签,只需将label_lst设置为["CATEGORY_FORUMS", "CATEGORY_UPDATES", "CATEGORY_PROMOTIONS", "CATEGORY_SOCIAL"]

从JSON文件加载任务

这是基于文件的接口函数,将在以下单独部分中进行解释。

gmail.load_json_tasks(config_json=None)

默认情况下,期望json配置文件位于~/.pydatamail/config.json

为特定标签保存附件

将带有选中标签的电子邮件的所有附件保存到Google Drive上的特定文件夹。此操作需要将Google Drive授权包含在身份验证凭据中。

gmail.save_attachments_of_label(label, path)

标签由其标签名称给出,而不是Google内部标签ID,路径必须是Google Drive根目录的相对路径,例如backup/emails。在此路径中,将创建一个以标签名称命名的新子文件夹。

将消息下载到pandas DataFrame

对于离线处理,将消息批量下载到pandas DataFrame中非常有用。

gmail.download_messages_to_dataframe(message_id_lst)

message_id_lst是消息ID列表,这可以从gmail.search_email()中获取。

获取电子邮件内容作为字典

将电子邮件内容渲染为Python字典,以便进行进一步处理。

gmail.get_email_dict(message_id)

message_id可以从类似gmail.search_email()的函数中获取。

更新数据库

更新存储在~/.pydatamail/email.db中的本地数据库。

gmail.update_database()

命令行界面

命令行界面目前相对有限,它支持以下选项

  • pydatamail_google运行位于~/.pydatamail/config.json中定义的任务。
  • pydatamail_google --file ~/.pydatamail/config.json运行在用户特定任务文件中定义的任务。
  • pydatamail_google --labels列出您的Gmail账户的所有标签。
  • pydatamail_google --database更新本地数据库。

基于文件的接口

目前,基于文件的接口仅支持两个功能

  • remove_labels_from_emails从您账户的所有电子邮件中删除特定标签。
  • filter_label_by_sender使用过滤器字典列表过滤电子邮件。

这两个函数在上面的Python接口部分中有更详细的解释。以下是位于~/.pydatamail/config.json的示例配置文件。

{
    "database": "sqlite:////~/.pydatamail/email.db",
    "remove_labels_from_emails": 
    ["CATEGORY_FORUMS", "CATEGORY_UPDATES", "CATEGORY_PROMOTIONS", "CATEGORY_SOCIAL"], 
    "filter_label_by_sender": {
        "label": "my_other_email_provider", 
        "filter_dict_lst": [
            {"from": "my_email@provider.com", "label": "my_special_label"},
            {"to": "spam@google.com", "label": "another_email_label"},
            {"subject": "you won", "label": "success_story"}
        ]
    }
}

项目详情


下载文件

下载您平台所需的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码发行版

pydatamail_google-0.0.8.tar.gz (33.0 kB 查看哈希值)

上传时间 源代码

构建发行版

pydatamail_google-0.0.8-py3-none-any.whl (22.7 kB 查看哈希值)

上传时间 Python 3

支持