Python接口,用于在Google Mail上过滤电子邮件。
项目描述
使用Python管理您的Gmail电子邮件
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"}]
在当前阶段,每个过滤器只能验证三个字段中的一个:from
、to
或subject
,并且所有过滤器都应用于“包含”而不是精确匹配。
搜索电子邮件
通过特定查询搜索电子邮件,或者可选地限制搜索到标签列表。
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 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f8b978a20cd6114554d0d06d2cdd658ae1d068851ec78f98173bf20a50f55704 |
|
MD5 | f7f98c01f1a103fa47c8905d23a31ce2 |
|
BLAKE2b-256 | a1980fd2e0e42fd579478faf917d34c1ae37693c55acdc92fc841c4cb507bc5d |
pydatamail_google-0.0.8-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8409b8ebd19179c50be50c00b92de6578bb829e29fa9fbc98eea6e6c0fd66449 |
|
MD5 | 5cd39114692a15fa4e7642eb1a507d38 |
|
BLAKE2b-256 | 0c83cd22ca073d1d0268c936f2c649548eb1b62ce1c0f9f0ddcf9694e067bfd4 |