【发布时间】:2020-03-15 21:56:19
【问题描述】:
我有这个功能,我每小时运行一次。它会检查收件箱中是否有发往邮件列表的消息。然后它会重新格式化它们,保存附件,并将它们转发到另一个电子邮件地址,然后表面上丢弃处理过的邮件。效果很好,除了....
我最近遇到了一个不会死的线程。它有超过 50 条回复,当新回复带有相同主题行时,线程中所有已处理的旧消息都会再次处理。所以我的发件箱呈指数增长,收件人的电子邮件收件箱也是如此。我不确定我是否只是没有有效地删除已发送的消息,或者是否有其他方法我应该在线程中识别已处理的消息,以便在将更多消息添加到线程时不会再次处理它们.我不知道这是应用程序脚本问题还是 gmail 问题。
这是我的代码:
function processPMFMail(){
var threads = GmailApp.getInboxThreads();
var message = GmailApp.getMessagesForThreads(threads);
for(var i = 0; i < message.length; i++) {
for(var j = 0; j < message[i].length; j++) {
var from = message[i][j].getFrom();
var to = message[i][j].getTo();
var cc = message[i][j].getCc();
var bcc = message[i][j].getBcc();
var fields = {to, cc, bcc};
//Logger.log(to);
if (
[to,cc,bcc].some(field =>
["EMAIL-1","EMAIL-2"].some(email => field.includes(email))
)
) {
var subject = cleanSubject(message[i][j]);
if (subject == "DoNotPost") {
Logger.log("Email not for posting - " + cleanSubject(message[i][j]));
message[i][j].moveToTrash();
} else{
var from = parseEmailName(message[i][j]);
var body = message[i][j].getPlainBody();
var hBody = message[i][j].getBody();
var attachment = saveAttachments(message[i][j]);
var opening = "<br>From: " + from + "<br> Sent: "+ Utilities.formatDate(message[i][j].getDate(), "US/Eastern", "M/d/yy @ h:mm aaa") + "<br><br>" + attachment;
if (hBody.indexOf("</body>")>-1) {
hBody = removeForwards (hBody);
hBody = hBody.replace("</body>",opening + "</body>").trim();
} else{
hBody = hBody + opening;
}
Logger.log(subject + opening);
//send the message
GmailApp.sendEmail("EMAIL-3", subject , opening + body ,
{htmlBody: hBody,
name: from
})
} // end of processed messages
//move the message to the trash
message[i][j].moveToTrash();
}
else {Logger.log("No Messages to forward")}
}
}
}
感谢任何指点。
-DH
【问题讨论】: