我想在标准Gmail用户的Chrome扩展中以编程方式创建Gmail过滤器(阅读非Google应用程序)。目前,由于这两个(过时的)资源:
- Grexit Filters API
- Gmail过滤器助手,Userscript
我已经设法开发了一个能够创建过滤器的早期原型,该过滤器自动存档("cf2_ar=true")在某个电子邮件地址("cf1_to=")收到的电子邮件。然而,Gmail使用的任何其他"cf2"参数似乎都不再有效了。例如,应用带有参数"cf2_cat="或"cf2_sel="的标签,将不会执行任何操作。
我知道Gmail的代码在应用程序或扩展开发方面不是很友好和开放,但如果你们中的一些人对Gmail用于创建过滤器的当前参数有任何想法、建议或更新,特别是用于将标签应用于消息的参数,我将非常感谢任何帮助。
script.js
(DOM end)
// 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);
实际上,cf2_sel参数确实为我工作。我有一些类似的问题,在这个问题和答案中描述。
我的代码使用Grexit过滤器项目并解决了一个示例用例:
"当一个关键字出现在电子邮件内容中,添加标签,存档并设置此关键字的过滤器"
我成功地测试了它,当查看Grexit代码时,'labelas'操作设置了上面提到的"cf2_sel"参数。
我的示例项目可以在这里找到,并为您提供快速测试和验证的手段,如果这适用于您。