几个月前我问过这个问题。@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:帐户名称“Company Exchange”似乎会随着时间的推移而定期更改。我有时看到它只是称为“交换”,然后在其他时候(比如现在)它是“公司交换”。到目前为止,我发现的唯一不变的是“Exchange”这个词在某处的名称中。
为了解决这个问题,我一直习惯于做以下事情:
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});
似乎没有工作。只是想知道它是否无法工作,或者我是否有语法错误阻止它工作。