【问题标题】:How to Create Gmail Filters Programmatically?如何以编程方式创建 Gmail 过滤器?
【发布时间】:2014-04-12 22:45:09
【问题描述】:

我想在 Chrome 扩展程序中为标准 Gmail 用户(阅读非 Google 应用程序)以编程方式创建 Gmail 过滤器。目前,感谢这 2 个(过时的)资源:

  1. Grexit Filters API
  2. Gmail Filter Assistant, Userscript

我设法开发了一个早期原型,该原型能够创建一个过滤器,该过滤器可以自动归档(“cf2_ar=true”)在某个电子邮件地址(“cf1_to=”)收到的电子邮件。但是,Gmail 使用的任何其他“cf2”参数似乎都不再有效。例如,应用带有参数“cf2_cat=”或“cf2_sel=”的标签什么都不做。

我知道 Gmail 的代码在应用程序或扩展程序开发方面不是非常友好和开放,但如果你们中的一些人对 Gmail 用于创建过滤器的当前参数有任何想法、建议或更新,我将不胜感激,尤其是用于将标签应用于消息的那些。

script.js(DOM 结束)

// Inject API into Gmail DOM
var s = document.createElement('script');
s.src = chrome.runtime.getURL('js/lib/api.js');
(document.head||document.documentElement).appendChild(s);
s.onload = function() {
    s.parentNode.removeChild(s);
};

document.addEventListener('Demo_connectExtension', function(e) {

if(e.detail) {

   // Gmail GLOBALS : DATA
    DATA = e.detail;
    user_data[0] = DATA[9]; // Id (ik)
    user_data[1] = DATA[10]; // Email
    user_data[2] = DATA[17][9][8]; // Locale
    user_data[3] = DATA[7]; // Gmail inbox

    var emailarr = user_data[1].split('@');
    user_data[4] = emailarr[0] + '+do@' + emailarr[1]; // email for filter


    var regex_cookie = new RegExp("GMAIL_AT=(.+?);");

    if (typeof document.cookie !== 'undefined') {

            // Get cookie
        var gmcookie = document.cookie.match(regex_cookie)[1];
        console.log('cookie:' + gmcookie);


        var gmail_filter_url =  'https://mail.google.com' + user_data[3] + 
                                '/?ui=2&ik=' + user_data[0] +
                                '&at=' + gmcookie +
                                '&view=up&act=cf&pcd=1&mb=0&rt=c';

        var postdata = 'search=cf&cf1_to=' +
                        encodeURIComponent(user_data[4]) +
                        '&cf2_ar=true';

        $.post(gmail_filter_url, postdata, function(gmail_response){
            console.log(gmail_response);
            });
    }

      // [...]

api.js(注入到 Gmail)

'use strict';

var GLOBALS;

setTimeout(function() {
    /* Send Gmail Data to my extension */
    document.dispatchEvent(
        new CustomEvent('Demo_connectExtension', {
            detail: GLOBALS
        }));
}, 1);

【问题讨论】:

    标签: javascript google-chrome-extension gmail


    【解决方案1】:

    实际上,cf2_sel 参数确实对我有用。我有一些类似的问题,在this question and answer 中描述。

    我的代码使用 Grexit 过滤器项目并解决了一个示例用例:

    “当电子邮件内容中存在关键字时,添加标签,归档并为此关键字设置过滤器”

    我测试成功,在查看 Grexit 代码时,“labelas”操作设置了上述“cf2_sel”参数。

    可以在here 找到我的示例项目,如果这对您有用,可以为您提供快速测试和验证的方法。

    【讨论】:

      猜你喜欢
      • 2012-12-18
      • 1970-01-01
      • 2011-12-15
      • 2018-01-23
      • 1970-01-01
      • 1970-01-01
      • 2011-08-13
      • 2011-07-12
      • 2013-02-18
      相关资源
      最近更新 更多