mutt:标记为已读并删除

mutt:标记为已读并删除

我没有阅读一些消息就丢弃了它们。然而,删除上述邮件后,我很快就收到垃圾箱中存在未读邮件的提醒。

有没有办法:

  • 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`

相关内容