自动删除gmail帐户垃圾邮件文件夹中包含特定关键字的电子邮件



过去,我使用一个简单的google apps脚本片段每小时从我的Gmail帐户中删除所有垃圾邮件。这个解决方案是有效的,但这意味着我有时不会收到来自谷歌选择移动到垃圾邮件文件夹的人的电子邮件。我决定最好的解决方案是只删除包含某些关键字的电子邮件。在未能在网上找到如何做到这一点的例子后,我在对Gmail应用程序脚本API进行了一些研究后提出了一个解决方案

脚本来源:Google Apps Script - Gmail,永远删除垃圾邮件与特定标签

删除所有邮件的原始代码:

function deleteForever(userId) {
var threads = GmailApp.search("in:spam");
for (var i = 0; i < threads.length; i++) {
Gmail.Users.Messages.remove(userId, threads[i].getId().toString());
}
}
deleteForever("[your_email_here@gmail.com]")

请注意:spam"可以更改到Gmail帐户中的任何位置。在选择要删除的线程时要非常小心!

解决方案需要两条我以前没有的信息:

  1. 获取消息文本的getPlainBody()方法
  2. javascript匹配函数

我没有盲目地删除线程变量中的每条消息,而是使用一个非常基本的正则表达式来匹配关键字列表,并且只删除匹配的消息。

使用此脚本时,在单词和包含括号中的空格的短语之间添加管道|,如下所示。

function deleteForevers(userId) {
var threads = GmailApp.search("in:spam");
for (var i = 0; i < threads.length; i++) {
var msg = threads[i].getMessages()[0];
if (msg.getPlainBody().match(/prizes|miracle|(real estate)|(nigerian prince)/gi) !== null){
Gmail.Users.Messages.remove(userId, threads[i].getId().toString());
}
}
}
deleteForevers("[your_email_here@gmail.com]")

我希望这是有帮助的!

我能够运行脚本与一些更改:

function deleteForevers(userId='me') {
var threads = GmailApp.search("in:spam");
for (var i = 0; i < threads.length; i++) {
var msg = threads[i].getMessages()[0];
if (msg.getPlainBody().match(/prizes|miracle|darling|(real estate)|(nigerian prince)/gi) !== null){
Gmail.Users.Threads.remove(userId='me', threads[i].getId().toString());
}
}
}
deleteForevers("[your_email_here@gmail.com]")

注意:在使用此脚本之前,您需要启用高级服务[GmailApi](来自Google Guide)

相关内容

最新更新