背景 用户倾向于按下Gmail中的“删除”按钮(或通过谷歌应用程序同步在Outlook中),但我们希望存档所有邮件(谷歌每隔30天清除一次垃圾邮件)。
到目前为止解决方案 以下脚本每小时在触发器上运行,将垃圾箱中的任何线程移动到存档中。
function archiveTrash() {
var threads = GmailApp.getTrashThreads(0, 100);
for (var i = 0; i < threads.length; i++) {
threads[i].moveToArchive();
}
}
问题用户报告邮件正在从收件箱中消失。
可能的原因我相信这就是发生的事情:用户正在处理消息的线程并删除线程中的一些消息(用户通常使用outlook,所以他们分别看到每条消息)。但是,线程中的其他消息仍保留在用户的收件箱中。然后getTrashThreads正在拾取包含至少一条已删除邮件的线程,并且脚本正在将整个线程移动到存档,包括收件箱中的邮件。
解决方案?这是我被困的地方。如何仅存档已删除的邮件,而不是整个帖子?有没有办法阻止gmail将消息分组到线程中?我对发生的事情是否正确?
答案 0 :(得分:0)
Gmail仅支持在线程级别进行存档,而不支持在邮件级别进行存档,但它允许删除单个邮件。我认为您的用例不受支持。
答案 1 :(得分:0)
检查线程isInInbox()
。如果不是,请归档该线程。如果是,请归档,然后moveToInbox()
。
编辑:我错过了你问题的最后一部分。我不知道存档特定邮件的方法,因此它们不会弹出Outlook收件箱。您可以在Gmail中关闭对话视图,但我不知道它对线程产生了什么影响。
答案 2 :(得分:0)
不是那么简单但可能的解决方案:
设置用户ToArchive@YourDomain.com
通过已删除的邮件检查邮件ID,而不是线程,对存档邮件的索引进行迭代(稍后将详细介绍索引)
将不在索引中的邮件转发到ToArcive+messageId@YourDomain.com(在@之前最多可以包含64个字符,所以应该没问题。)
迭代ToArchive中的消息解析来自To的消息ID:并添加到index然后标记为read。
在ToArchive中存档阅读邮件