Skip to main content

gmail的TUI客户端

项目描述

邮件

Gmail 的简单 TUI 邮件客户端。

介绍

Pmail 旨在成为一个可用的、基于终端的谷歌 Gmail 服务客户端 Pmail 建立在 Gmail API 之上,使用 python,因此 p. Pmail 应该与其他终端实用程序很好地集成,它使用 W3m解析电子邮件,使用Vim ( Neovim ) 编辑和撰写电子邮件,并集成fzf用于模糊查找电子邮件地址和作为选择附件的文件选择器。到目前为止,我还没有用其他程序代替这些程序进行测试,但原则上应该可以使用其他程序代替它们。

开发 Pmail 的动机来自于让 Mutt和相关的 msmpt/offlineimap 配置功能变得越来越沮丧。

Pmail 并不打算通过 API 实现所有可用的功能,当前的一组功能如下所列。当然,Pmail 深受Mutt的启发,但其目标是为 Gmail 用户提供更简单、更实用的客户端。

强制截图

截屏

特征

  • 发送、接收、回复、转发电子邮件。
  • 带有 vimish 绑定的键盘驱动界面。
  • 轻的。
  • 使用 W3m 查看电子邮件。
  • 使用 Vim 撰写电子邮件。
  • 使用 fzf 模糊搜索联系人,无需通讯录。
  • 根据 Gmails 标签系统对邮件进行排序。
  • 轻松操作标签。(标记为已读、移至垃圾箱等)
  • 分离客户端和服务器程序。

Pmail 实现了客户端/服务器对。服务器应该在后台运行(例如通过 systemd 服务),它有两个目的。首先,它应该保持一个本地数据库,其中包含有关用户邮箱的信息,与谷歌保持的远程版本同步。其次,它为客户端处理所有与数据库相关的功能。这样做的好处是它允许使用 sqlite 数据库,因为使用 python 线程模块中的 Lock 对象可以很容易地在同一程序的不同线程之间处理并发问题。本地数据库不是远程收件箱的完整副本,它仅存储电子邮件标题字段中包含的信息(或多或少)。如果您想阅读电子邮件,则必须下载它,因此需要网络连接。

安装说明

目前 Pmail 仍在开发中,仍然存在一些问题,但需要测试。如果您想对其进行测试,您应该按照以下说明进行操作。

依赖项

如果您希望使用 Pmail 的所有功能,您还需要安装 W3m、vim 和 fzf。您还需要以下 python 包:

google-api-python-client 
google-auth-httplib2 
google-auth-oauthlib
sqlalchemy

这些可以使用 pip 安装,或者您喜欢安装 python 模块。

设置 Gmail API

(说明自 2020 年 7 月起有效。)您需要为要使用的每个帐户执行此步骤。

  1. 转到快速入门指南,然后单击“启用 Gmail API”按钮。
  2. 同意条款和条件,如果它询问您应用程序的类型,请选择“桌面应用程序”,最后单击最后的“下载客户端配置”按钮。
  3. credentials.json将文件保存在安全的地方。

设置 Gmail PubSub(可选)

这是一个可选步骤,仅当您希望通过 GClouds PubSub 界面启用推送/拉取更新通知时才需要。有关如何设置的详细说明,请参见此处。

总之,您需要做的是:

  1. 安装 pubsub 客户端:

    pip install --upgrade google-cloud-pubsub

    您将需要为 pubsub 客户端创建身份验证凭据,请按照此处的说明进行操作。credentials.json 将生成的文件保存在安全的地方。

  2. 为与 API 关联的项目创建一个名为 pubsub 的主题pmail(如果您遵循快速入门指南,这将被称为类似quickstart-xxxxxxxxxxxxx

  3. 创建一个订阅pmail-update,将交付类型设置为pull

  4. 将发布权限授予gmail-api-push@system.gserviceaccount.com.

安装 Pmail

方法一:使用pip(推荐)

运行以下命令:

pip install pmail-tui

方法2:克隆这个repo

确保您已安装所有依赖项,然后:

git clone https://github.com/lt20kmph/pmail

方法 3:来自 AUR

尚不支持

配置

Pmail 按优先顺序在以下位置查找配置文件:

$HOME/.config/pmail/config.yaml
../config.yaml

要复制包含的示例配置文件以$HOME/.config/pmail/config.yaml 运行以下命令:

python -m pmail --mk-config

您可以放心地忽略大多数配置选项,但您需要在帐户部分填写相关详细信息。

要使 pubsub 工作(可选),您需要使用身份验证和项目名称填写相关设置。

此外,您可能需要根据自己的喜好更改nvimvimunder 。editor

入门

首先我们需要启动服务器。在服务器模式下运行 Pmail:

python -m pmail -m server

如果一切正常,将打开一个 Google 窗口(或在您的终端中出现一个链接),要求您确认相关权限。此时,您可能必须找到“允许不安全的应用程序”的高级选项。如果几分钟后一切顺利(或更长时间,取决于您正在同步多少历史记录,由配置文件中的“sync_from”选项控制),您应该已经同步了邮箱的本地副本,然后您可以启动 Pmail客户端模式,在单独的终端窗口中:

python -m pmail -m client

客户端应该启动并且您应该看到您的消息列表,并且您可以开始删除/发送/转发电子邮件。

使用说明

使用箭头键或 j/k 在消息列表中上下滚动。您还可以使用 PAGEUP/PAGEDOWN 键更快地滚动。滚动时会突出显示选定的电子邮件。以下键绑定可用。

RETURN - Read the selected email
r - Reply
f - Forward an email
a - Reply to group/Reply to all
m - Compose a new email
v - View attachments
dd - Move mail to trash and mark as read
dt - Move mail to trash but do not read
dr - Mark as read but leave in the inbox
ll - Toggle label visibility on and off
lu - Show messages with unread label
li - Only show messages with inbox label (default)
ls - Show messages with sent label
lt - Show messages in the trash
/ - Do a search
c - Clear search filter
SPACE - Select email (can be used to select multiple emails)
TAB - Switch between accounts if you have more than one configured
b[n] - Switch to nth mailbox, for n in [1,..,9]
bu - Start unified mailbox mode
gg - Go to top of message list
G - Go to bottom of message list
CTRL U - Scroll up one page
CTRL D - Scroll down one page
H - Move cursor to first visible messsage
M - Move cursor to central visible message
L - Move cursor to last visible message
q - Quit

在最终发送电子邮件之前,将显示一个确认屏幕。在此屏幕上提供了各种选项,但它们显示在界面上。在附件屏幕上,您可以按“q”退出或按“s”将附件保存到配置文件中的下载目录。

笔记

您可以通过在配置文件中设置关联值来选择要同步多少历史记录。

执行搜索时,直接从 Google 检索匹配消息的列表 - 而不是通过查询本地数据库 - 并将相应的消息信息添加到本地数据库。这可能并不理想 - 这意味着如果您使用大量匹配项进行搜索,它可能会非常慢,并且可能导致您的本地数据库增长相当大。另一方面,如果您想使用本地存储的信息增加历史消息的数量,您可以搜索“newer_than:4y”,其中“4y”是您喜欢的任何时间段。该搜索与任何关键字搜索兼容,与通常的 Gmail 搜索功能完全相同,因此非常强大。

pmail 也可以使用标志“-n”和帐户 ID 运行。像这样运行时,pmail 将返回一个与提供的 id 对应的帐户邮箱中未读邮件数相对应的 int。

例如,如果您的 中有以下内容config.yaml

accounts:
    yourname@gmail.com:
        id: 'ID'
        name: 'Wonderful Person'
        credentials: 'credentials.json'

然后运行:

python -m pmail -n ID 

将返回邮箱中未读邮件的数量 yourname@gmail.com。这可能对脚本有用。

附件

为了正确(或多或少)检测哪些邮件有附件,当 pmail 首次运行时,它将创建一个名为的新隐藏标签ATTACHMENT ,它将添加到所有现有的带有附件的邮件中,并创建一个过滤器,将这个标签添加到所有带有附件的新传入消息。这意味着 pmail 将在 gmail Web 界面中具有回形针图标的任何邮件上显示附件图标。

安全注意事项

您对自己的安全负责。将您的 credentials.json 文件保存在安全的地方,可能是加密的。第一次运行后,Pmail 会存储一个 token.pickle 文件,该文件确认您已同意授予 Pmail 发送和修改电子邮件的权限。还要妥善保管此文件。程序的服务器和客户端部分之间的通信非常原始,目前没有实施任何形式的加密。因此,不要尝试在您不完全信任的任何网络上运行客户端/服务器

限制和 TODO

  • 有一些奇怪的错误需要调查。
  • 以不同的方式处理具有大量结果的搜索。
  • 改进错误处理和日志记录(部分完成,但仍可改进)。

下载文件

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

源分布

pmail-tui-0.1.8.tar.gz (44.0 kB 查看哈希

已上传 source