我没有阅读一些消息就丢弃了它们。然而,删除上述邮件后,我很快就收到垃圾箱中存在未读邮件的提醒。
有没有办法:
set beep_new
当垃圾箱中发现新消息时禁用警报 ( );或者- 同时将邮件标记为已读并删除它?
我想前者可以使用垃圾文件夹挂钩来实现,后者可以使用宏来实现。然而,在后者的情况下,将消息 ( Wn
) 或整个线程 ( ^R
) 标记为已读后,所选条目可能会也可能不会更改,具体取决于消息在文件夹中的位置。
然后,必须使用条件来确定如何通过使用条目导航命令来恢复选择。恢复选择后,可以删除该消息。根据官方文档,配置文件不支持条件,因此基于宏的解决方案可能涉及通过 shell 脚本进行管道传输。
也许有一个我忽略的更简单的解决方案?
答案1
要同时将消息标记为已读并删除它,您可以在set resolve=no
命令之前使用 以避免跳转到下一条消息。这避免了必须检查条件等。操作完成后,您的光标将保持在原位。
例如,在将邮件移动到存档邮件目录之前,我使用以下命令将其标记为已读:
macro index,pager a ":set confirmappend=no delete=yes resolve=no\n<clear-flag>N<tag-prefix><save-message>=archive\n:set confirmappend=yes delete=ask-yes resolve=yes\n<next-undeleted>"
这会:
- 在操作之前设置一些值,包括
resolve=no
避免跳转到下一条消息 - 清除未读标志:
<clear-flag>N
- 将消息保存到我的存档中:
<tag-prefix><save-message>=archive
- 将价值设置回应有的样子,包括
resolve
- 跳转到下一条未删除的消息:
<next-undeleted>
因此,要标记为已读和删除,类似这样的操作应该有效:
macro index,pager d ":set confirmappend=no delete=yes resolve=no\n<clear-flag>N<tag-prefix><delete-message>:set confirmappend=yes delete=ask-yes resolve=yes\n<next-undeleted>"
答案2
如果您启用该选项imap_check_subscribed
,则所有 IMAP 订阅的文件夹都会自动添加到邮箱列表中。
该命令unmailboxes
可用于从 列表中删除邮箱mailboxes
。因此,您可以在文件中添加以下内容.muttrc
:
push ":unmailboxes +[Gmail]/Trash<enter>"
我们不能直接使用该unmailboxes
命令,因为imap_check_subscribed
在读取配置文件( )后将检索并添加邮箱列表.muttrc
,因此我们需要push
它。
答案3
最明显的方法是在 mutt 检查新邮件的邮箱列表中不包含“垃圾箱”。
即不要将垃圾桶文件夹添加到邮箱中。
例如,如果您使用以下内容生成邮箱列表:
邮箱\ /var/spool/mail/用户名 \ `查找 ~/Mail -type f | xargs`
grep -v trashcan |
然后在 xargs 之前添加,如下所示:
`查找 ~/Mail -type f | grep -v 垃圾桶 | xargs`