11

一个简单的问题:我想将具有特定主题的电子邮件移动到一个文件夹中,然后将它们标记为已读。搬家对我有用

:0: H
* ^Subject:.*(ThisIsMySubject)
$HOME/mail/ThisIsMyFolder

但是如何将邮件标记为已读?

4

1 回答 1

17

注意:12 月更新。2011 年 16 月

Procmail解决方案

下面的食谱对我有用。.Junk是垃圾邮件文件夹:

MAILDIR=$HOME/Maildir
:0
* ^X-Spam-Flag: YES
{
    # First deliver to maildir so LASTFOLDER gets set
    :0 c
    .Junk

    # Manipulate the filename
    :0 ai
    * LASTFOLDER ?? ()\/[^/]+^^
    |mv "$LASTFOLDER" "$MAILDIR/.Junk/cur/$MATCH:2,S"
}

邮递解决方案

前言:最近我(不,我想)用 maildropfilter 做同样的事情。阅读后man maildropfilter,我炮制了以下食谱。我相信人们会觉得这很方便——我知道我会。

下面的示例将新电子邮件标记为已读,但也将旧邮件标记为未读。

SPAMDIRFULL="$DEFAULT/.Junk"

if ( /^X-Spam-Flag: YES$/ || \
     /^X-Spam-Level: \*\*\*/ || \
     /^Subject: \*+SPAM\*/ )
{
  exception {
    cc "$SPAMDIRFULL"
    `for x in ${SPAMDIRFULL}/new/*; do [ -f $x ] && mv $x ${SPAMDIRFULL}/cur/${x##*/}:2,S; done`
    `for x in ${SPAMDIRFULL}/cur/*:2,; do [ -f $x ] && mv $x ${SPAMDIRFULL}/cur/${x##*/}S; done`
    to "/dev/null"
  }
}

请注意,该exception命令可能会违反直觉。手册规定如下:

异常语句捕获通常会导致 maildrop 终止的错误。如果在异常子句所包含的语句块中的任何地方遇到致命错误,则执行将在异常子句之后立即恢复。

于 2011-10-06T15:20:40.557 回答