跳转到主要内容

根据与同一标签的其他邮件的相似性,为Google Mail中的邮件分配标签。

项目描述

自动排序您的电子邮件

Python package Coverage Status Code style: black

pygmailsorter是一个Python模块,用于通过Google mail服务的API自动过滤电子邮件。它根据与同一标签的其他邮件的相似性为邮件分配标签。

动机

许多人难以处理不断增加的电子邮件数量,导致数百封未读邮件。由于即使是最先进的搜索引擎在处理大量电子邮件时也有限制,因此保持电子邮件概览的唯一方法是将其归档到文件夹中。手动将电子邮件归档到文件夹是单调乏味的,但大多数人又太懒于创建电子邮件过滤器并保持它们更新。最后,在移动计算时代,大多数人通过智能手机访问他们的电子邮件,排序电子邮件的挑战比以往任何时候都更相关。

解决这个挑战的方案是自动根据给定文件夹中现有电子邮件的相似性过滤电子邮件。这一解决方案已在几篇研究论文中提出,从垃圾邮件过滤1到将电子邮件排序到文件夹的特定情况2。甚至有几个开源原型可用,如34

这基本上是一个针对Google Mail API的具体类似方法。它是一个Python脚本,可以定期执行,例如使用cron任务对用户的电子邮件进行排序。

安装

pygmailsorter可在conda-forge或pypi仓库中获取,可以使用以下任一方法安装:

conda install -c conda-forge pygmailsorter

或者

pip install pygmailsorter

配置

pygmailsorter需要两步配置

  • 用户必须创建一个Google Mail API凭据文件credentials.json,遵循Google Mail API文档
  • 访问SQL数据库,这可以提供为连接字符串,或者pygmailsorter将使用位于当前目录的本地SQLite数据库email.db。这导致以下连接字符串sqlite:///email.db

Python接口

pygmailsorter模块导入Gmail类和函数load_client_secrets_file

from pygmailsorter import Gmail, load_client_secrets_file

初始化pygmailsorter

Gmail()类创建一个gmail对象

gmail = Gmail(
    client_config=load_client_secrets_file(
        client_secrets_file="/absolute/path/to/credentials.json"
    ),
    connection_str="sqlite:////absolute/path/to/email.db",
)

根据上一节的配置,函数load_client_secrets_file用于加载credentials.json文件,并将内容作为Python字典提供给Gmail()类的client_config参数。除了client_config参数外,Gmail()类还需要连接到SQL数据库,这提供为connection_str。此外,可以指定email_download_formatmetadatafull,其中主要区别是是否存储电子邮件的内容。最后,作为可选参数,可以指定port,该参数用于通过Web浏览器对Google Mail API进行身份验证,默认为8080

同步本地数据库与电子邮件账户

为了减少通信开销,电子邮件存储在本地SQLite数据库中。

gmail.update_database(quick=False)

通过将可选标志quick设置为True,仅下载新电子邮件,而忽略现有电子邮件的更改。

生成电子邮件的pandas数据框

从本地SQLite数据库加载所有电子邮件,并将它们组合到一个pandas DataFrame中,以进行进一步的后处理

df = gmail.get_all_emails_in_database()

从电子邮件服务器下载特定标签

从电子邮件服务器下载标签为"MyLabel"的电子邮件

df = gmail.download_emails_for_label(label="MyLabel")

在这种情况下,电子邮件不存储在本地SQLite数据库中。

使用机器学习过滤电子邮件

为带有标签"MyLabel"的电子邮件分配新标签

gmail.filter_messages_from_server
    label="MyLabel",
    recommendation_ratio=0.9,
)

此功能基于上面的download_emails_for_label()函数。它检查服务器以获取所选标签"MyLabel"的新电子邮件。然后从本地SQLite数据库重新加载机器学习模型,并尝试预测这些电子邮件的正确标签。recommendation_ratio定义了实际移动电子邮件所需的确定性水平,0.9等于90%的确定性。

命令行界面

命令行界面实现了与Python接口相同的功能,它支持以下选项

  • pygmailsorter -c/--credentials Google提供的凭据文件路径,例如credentials.json
  • pygmailsorter -d/--database 连接到数据库的连接字符串,例如sqlite:///email.db
  • pygmailsorter -u/--update 更新本地电子邮件数据库并重新训练机器学习模型。
  • pygmailsorter -l/--label=MyLabel 为带有标签MyLabel的电子邮件分配新标签。
  • pygmailsorter -p/--port 运行身份验证Web服务器的端口,例如8080

项目详情


下载文件

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

源分布

pygmailsorter-0.0.6.tar.gz (1.4 MB 查看哈希)

上传于 源文件

构建分发版

pygmailsorter-0.0.6-py3-none-any.whl (40.3 kB 查看哈希值)

上传于 Python 3

由以下支持