如何用Google Scripts自动永久删除Gmail垃圾文件夹含指定关键词的邮件
Gmail 跳过回收站永久删除特定关键词垃圾邮件教程
过去一两年我一直没找到跳过回收站直接永久删除邮件的办法,只能凑合用效果不好的替代方案。现在我整理出了可永久删除匹配特定短语的垃圾邮件的方法,操作说明如下:
- 将你需要过滤的任意关键词/短语添加到
phrases数组中 - 需要先在Google Scripts项目中添加Gmail服务,否则运行会报错,添加方式为点击「服务」旁边的「+」号完成添加
- 如果需要实现自动运行,可进入触发器标签页,为项目添加定时(或其他你需要的触发类型)触发器,我个人的设置是每5分钟运行一次
- 首次尝试运行时,由于项目未通过Google验证,需要手动允许项目运行,页面会列出所需的访问权限,你可选择接受/授予权限,部分情况会被要求专门授予Gmail账户访问权限
// 记得在Google Scripts项目中添加Gmail服务,否则会报错,可点击「服务」旁的「+」完成添加 function deleteSpamEmails() { // 获取当前用户的邮箱地址 var userEmail = Session.getActiveUser().getEmail(); // 定义要在主题或正文中搜索的短语/关键词,大小写不敏感 var phrases = ["hawaiian escapes","yorktown real estate","cheap vitamins @ vita-shack"]; // 获取垃圾邮件文件夹中的所有邮件线程 var threads = GmailApp.search("label:Spam"); for (var i = 0; i < threads.length; i++) { // 获取线程下的所有邮件 var messages = threads[i].getMessages(); for (var j = 0; j < messages.length; j++) { // 将主题和正文转为小写方便匹配,大小写不敏感 var subject = messages[j].getSubject().toLowerCase(); var body = messages[j].getBody().toLowerCase(); // 检查主题或正文中是否包含上面数组中定义的任意短语 var shouldDelete = phrases.some(function(phrase) { return subject.includes(phrase.toLowerCase()) || body.includes(phrase.toLowerCase()); }); if (shouldDelete) { // 获取要删除邮件的ID var messageId = messages[j].getId(); // 调用Gmail API永久删除邮件,跳过回收站 var url = "https://www.googleapis.com/gmail/v1/users/" + userEmail + "/messages/" + messageId; var options = { method: "DELETE", headers: { // 使用OAuth令牌完成身份验证,记得授权Google Scripts访问你的邮箱 Authorization: "Bearer " + ScriptApp.getOAuthToken() } }; // 发送API请求执行删除 UrlFetchApp.fetch(url, options); } } } } deleteSpamEmails();
内容的提问来源于stack exchange,提问作者Josh Barton
相关产品推荐
相关产品推荐

