JXA删除Apple Mail中的旧邮件

时间:2016-08-01 18:58:57

标签: javascript applescript javascript-automation jxa

几个月前我问this question。 @foo和@bacongravy在我的解决方案下面发表了一些评论,我觉得很有意思。我没有继续那些评论(不符合评论的文本限制),而是认为我会问一个新的,但类似的问题。我想删除某个年龄的收件箱中的邮件。 @bacongravy评论道:

var cutoffDate = new Date(Date.now() - 44 * 60 * 60 * 24 * 1000);
Application("Mail").move(Application("Mail").inbox.messages.whose({ dateSent: { '<': cutoffDate } }), {to: Application("Mail").mailbox["Archive"])

这个问题是双管齐下的。一个插件是我的Apple Mail连接到由企业Microsoft Active Directory管理的Microsoft Exchange服务器。在AppleScript和JavaScript中,这似乎使Mail的脚本编写复杂化。即使我只有一个,我也经常要引用正确的“帐户”。 所以,我确实设法让这个工作:

var cutoffDate = new Date(Date.now() - 44 * 60 * 60 * 24 * 1000);
Application("Mail").move(Application("Mail").inbox.messages.whose({ dateSent: { '<': cutoffDate } }), {to: Application("Mail").accounts.byName("Company Exchange").mailboxes.byName("Deleted Items")});

但是,我很犹豫要停在这里,因为分叉2:帐户名称“公司交换”似乎会随着时间的推移而定期更改。我曾经看到它有时被称为“交换”,然后在其他时间(如现在)它被称为“公司交换”。到目前为止,我发现的唯一常数是“交换”这个词在某个地方。

为了解决这个问题,我一直习惯做以下事情:

var Mail = new Application("Mail")
var account = Mail.accounts.whose({ 
name: { _contains: 'exchange' }
}, {
    ignoring: 'case'     
});
var inbox = account.mailboxes.whose({
name: { _contains: 'inbox' }
}, {
    ignoring: 'case'    
});
var trash = account.mailboxes.whose({
name: { _contains: 'deleted items' }
},{
    ignoring: 'case'
});

然而,

Mail.move(inbox.messages.whose({ dateSent: { '<': cutoffDate }}), {to: trash});

似乎没有用。只是想知道它是否无法工作,或者我是否有语法错误阻止它工作。

0 个答案:

没有答案