如何通过 chrome 扩展程序自动设置 gmail 过滤器?
How to automatically set gmail filter via chrome extension?
我想将以下用例实现为 Chrome 扩展:
- 用户访问 gmail
- 扩展检查当前电子邮件正文中的关键字
- 如果存在关键字,则添加并保存 gmail 过滤器(添加标签、归档,这里的细节不重要)
第一部分听起来更容易:gmail API to work with and even a gmail.js 项目应该会更容易。
添加过滤器似乎更难。有 email settings API doing precisely what I want,但我相当确定它只能由企业帐户使用(自定义电子邮件域,不适用于 gmail.com)。我希望解决方案更通用。
我想到的一件事是使用浏览器自动化——看到触发关键字后,脚本自动点击'Add filter'link,等待AJAX,设置过滤器参数并确认.
模拟用户 activity 的示例在 this answer
这可能发生在弹出窗口 ('Please wait, adjusting filters') 后面的 gmail 页面上,也可能发生在后台选项卡中,以防止它干扰用户的流程。不过,这对我来说似乎是丑陋的解决方法。
是否有我缺少的更直接或更好的方法?
经过更多实验并恢复较旧的 github 项目后,我发现可以通过从当前会话向 gmail 发出特定的 POST 消息来简单地为登录用户设置过滤器.
我不完全理解这个请求中使用的参数(如果有人有更好的信息,请分享),但我找到了一个sample code,这对我很有帮助。
在 gmail.js 社区中广泛讨论的第二个问题是 Gmail 安全策略将阻止您注入自己的脚本。这被 this boilerplate project
中所示的方法绕过了
我编译了这些解决方案来解决我的特定用例。这是我的解决方案 example project,开箱即用 - 如有疑问,请参阅自述文件。
我想将以下用例实现为 Chrome 扩展:
- 用户访问 gmail
- 扩展检查当前电子邮件正文中的关键字
- 如果存在关键字,则添加并保存 gmail 过滤器(添加标签、归档,这里的细节不重要)
第一部分听起来更容易:gmail API to work with and even a gmail.js 项目应该会更容易。
添加过滤器似乎更难。有 email settings API doing precisely what I want,但我相当确定它只能由企业帐户使用(自定义电子邮件域,不适用于 gmail.com)。我希望解决方案更通用。
我想到的一件事是使用浏览器自动化——看到触发关键字后,脚本自动点击'Add filter'link,等待AJAX,设置过滤器参数并确认.
模拟用户 activity 的示例在 this answer
这可能发生在弹出窗口 ('Please wait, adjusting filters') 后面的 gmail 页面上,也可能发生在后台选项卡中,以防止它干扰用户的流程。不过,这对我来说似乎是丑陋的解决方法。
是否有我缺少的更直接或更好的方法?
经过更多实验并恢复较旧的 github 项目后,我发现可以通过从当前会话向 gmail 发出特定的 POST 消息来简单地为登录用户设置过滤器.
我不完全理解这个请求中使用的参数(如果有人有更好的信息,请分享),但我找到了一个sample code,这对我很有帮助。
在 gmail.js 社区中广泛讨论的第二个问题是 Gmail 安全策略将阻止您注入自己的脚本。这被 this boilerplate project
中所示的方法绕过了我编译了这些解决方案来解决我的特定用例。这是我的解决方案 example project,开箱即用 - 如有疑问,请参阅自述文件。