我很害怕在我的Gmail收件箱中收到不需要的邮件,我现在愿意创建一个白名单的扩展名,其中包含来自 不 <的人的所有邮件/ strong>在我的联系人列表中。我搜索了这么多个小时但却找不到任何因此想要做这个练习(如果它存在,请分享链接)。我已经创建了100多个过滤器,但绝对垃圾邮件发送者每次都超过我。
有人可以先告诉我这是否可行?我见过在gmail中添加功能的扩展程序,但我不知道如何通过扩展程序阻止电子邮件。 Plz帮助。
答案 0 :(得分:1)
您可以设置whitelist in Gmail,但它不太可能适用于如此庞大的地址列表。你可以做的是创建一张包含有效地址列表的Google表格和一个将根据这些地址扫描收件箱的Google脚本。
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var range = sheet.getDataRange();
var values = range.getValues();
var emails = [];
for (var i in values) {
emails.push(values[i][0]);
}
var threads = GmailApp.search("in:inbox is:unread");
for (var i=0; i<threads.length; i++) {
var from = threads[i].getMessages()[0].getFrom();
if ( !emails.indexOf(from) ) {
threads[i].moveToSpam();
}
}
您需要设置一个每5分钟左右运行此脚本的触发器。
答案 1 :(得分:0)
非常感谢Amit分享这个片段。借助于此,我能够提出一个有效的解决方案(ver1.0)并在下面与其他人分享:
function createTriggers() {
ScriptApp.newTrigger('runSpamFilter').timeBased().everyMinutes(10).create();
SpreadsheetApp.getActiveSpreadsheet().toast("The program will check for spam email every 10 minutes and"
+ " send them to Spam Folder after applying label MySpam. You may please close this window.", "Initialized");
}
function removeTriggers(show) {
var triggers = ScriptApp.getScriptTriggers();
for (i=0; i<triggers.length; i++) {
ScriptApp.deleteTrigger(triggers[i]);
}
if (show) {
SpreadsheetApp.getActiveSpreadsheet().toast("The program has stopped.", "Uninstalled");
}
}
function runSpamFilter() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var range = sheet.getDataRange();
var values = range.getValues();
var emails = [];
var regex = /([a-zA-Z0-9+._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9._-]+)/gi;
var my_label = GmailApp.getUserLabelByName("MySpam");
var spamCount = 0;
for (var i in values) {
emails.push(values[i][0]);
}
var threads = GmailApp.search("in:inbox is:unread");
for (var i=0; i<threads.length; i++) {
var from = threads[i].getMessages()[0].getFrom();
var from_email = from.match(regex);
if ( emails.indexOf(from_email[0]) == -1 ) {
threads[i].addLabel(my_label);
threads[i].moveToSpam();
spamCount++;
}
}
Logger.log("Spams found = %s", spamCount);
}
function startProgram() {
removeTriggers(false);
createTriggers();
}
function onOpen() {
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var menu = [
{name: "Step 1: Initialize", functionName: "startProgram"},
{name: "Step 2: Start ", functionName: "runSpamFilter"},
{name: "Uninstall (Stop)", functionName: "removeTriggers"}
];
sheet.addMenu("Gmail Spam Filter v1.0", menu);
}
我也可以提出ver2.0,它删除了这个脚本的当前限制。截至目前,您必须制作一个包含所有联系人电子邮件地址的电子表格。但是,添加新联系人后,需要手动更新此电子表格。因此,此脚本需要一个额外的触发器,可以使用最近添加的联系人/电子邮件地址在15天内更新电子表格一次。我将在以后分享,或者可能有人可以从这里选择并提出ver2.0。
再次感谢。